Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 05.08.2012, 21:18
maxand007 вне форума Посмотреть профиль Отправить личное сообщение для maxand007 Найти все сообщения от maxand007
  № 1  
Ответить с цитированием
maxand007

Регистрация: Aug 2012
Сообщений: 3
По умолчанию Анимация

У меня вот какая проблема я прочёл документацию к PV3D но так и не нашёл как мне зделать так что бы пройгрывалась аниация в модели которую я загрузил под расширением collada моежет подсказать что мне делать?

Код AS3:
package 
{
	import Box2D.Collision.b2AABB;
	import Box2D.Collision.Shapes.b2Shape;
	import Box2D.Common.Math.b2Vec2;
	import Box2D.Dynamics.b2Body;
	import Box2D.Dynamics.b2DebugDraw;
	import Box2D.Dynamics.b2World;
	import Box2D.Dynamics.Joints.b2DistanceJoint;
	import Box2D.Dynamics.Joints.b2DistanceJointDef;
	import Box2D.Dynamics.Joints.b2GearJoint;
	import Box2D.Dynamics.Joints.b2GearJointDef;
	import Box2D.Dynamics.Joints.b2Joint;
	import Box2D.Dynamics.Joints.b2PrismaticJoint;
	import Box2D.Dynamics.Joints.b2PrismaticJointDef;
	import Box2D.Dynamics.Joints.b2PulleyJoint;
	import Box2D.Dynamics.Joints.b2PulleyJointDef;
	import Box2D.Dynamics.Joints.b2RevoluteJoint;
	import Box2D.Dynamics.Joints.b2RevoluteJointDef;
 
	import flash.display.Sprite;
	import org.papervision3d.cameras.Camera3D;
	import org.papervision3d.render.BasicRenderEngine;
	import org.papervision3d.scenes.Scene3D;
	import org.papervision3d.view.Viewport3D;
 
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.objects.primitives.Sphere;
	import org.papervision3d.view.BasicView;
	import org.papervision3d.core.geom.TriangleMesh3D;
 
	import org.papervision3d.cameras.SpringCamera3D;
	import org.papervision3d.core.math.Number3D;
 
	import flash.events.*;
	import org.papervision3d.objects.parsers.DAE;
 
	import org.papervision3d.events.FileLoadEvent;
 
	import org.papervision3d.cameras.CameraType;
	import flash.ui.Keyboard;
 
	public class baba extends BasicView implements IEventDispatcher
	{
		public var model:DAE;
		private var worldActorsArray:Array = [];
		var model2:ArbitraryActor3;
		private var keyRight:Boolean;
		private var keyLeft:Boolean;
		private var keyForward:Boolean;
		private var keyBackward:Boolean;
 
 
		public function baba()
		{
			setupWorld();
			setupPapervision3D();
			setupDebugDraw();
			super(stage.stageWidth,stage.stageHeight,true,false,CameraType.SPRING);
 
			initCameraControll();
 
			var camera:SpringCamera3D = SpringCamera3D(camera);
			camera.mass = 20;
			camera.damping = 4;
			camera.stiffness = 1;
			camera.positionOffset = new Number3D(0,50,150);
			camera.lookOffset = new Number3D(0,0,50);
 
			model = new DAE(true,null,true);
			/*var gg:DAE= new DAE();*/
 
			model.addEventListener(FileLoadEvent.LOAD_COMPLETE,ModelWasLoaded);
			model.addEventListener(FileLoadEvent.ANIMATIONS_COMPLETE, myOnAnimationsCompleteHandler);
			model.addEventListener(FileLoadEvent.ANIMATIONS_PROGRESS, myOnAnimationsProgressHandler);
			model.scale = 3;
			model.rotationY = (-90);
 
			/*model.play("all",true);*/
			/*model.animation.play("all",true);*/
			/*model.animation.playing;*/
			model.load("model/Sarutobi/SarutobiRun/SarutobiRun.dae");
			startRendering();
		}
		private function myOnAnimationsCompleteHandler(e:FileLoadEvent):void
		{
 
		}
		private function myOnAnimationsProgressHandler(e:FileLoadEvent):void
		{
 
		}
		private function initCameraControll():void
		{
			stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);
			stage.addEventListener(KeyboardEvent.KEY_UP,keyUpHandler);
		}
		private function keyDownHandler(e:KeyboardEvent):void
		{
			switch ( e.keyCode )
			{
				case "W".charCodeAt() :
				case Keyboard.UP :
					keyForward = true;
					break;
				case "S".charCodeAt() :
				case Keyboard.DOWN :
					keyBackward = true;
					break;
				case "A".charCodeAt() :
				case Keyboard.LEFT :
					keyLeft = true;
					break;
				case "D".charCodeAt() :
 
				case Keyboard.RIGHT :
					keyRight = true;
					break;
			}
		}
		private function keyUpHandler(e:KeyboardEvent):void
		{
			switch (e.keyCode)
			{
				case "W".charCodeAt() :
				case Keyboard.UP :
					keyForward = false;
					break;
				case "S".charCodeAt() :
				case Keyboard.DOWN :
					keyBackward = false;
					break;
				case "A".charCodeAt() :
				case Keyboard.LEFT :
					keyLeft = false;
					break;
				case "D".charCodeAt() :
				case Keyboard.RIGHT :
					keyRight = false;
					break;
			}
		}
		private function moveObject():void
		{
			if (keyForward)
			{
				model2.getBody().SetLinearVelocity(new b2Vec2(4,0));
				//camera.moveForward (30);
			}
		else if (keyBackward)
		{
			model2.mesh.moveBackward(30);
		}
 
		//camera.moveBackward (30);
	}
	/*if (keyRight)
	{
	paperPlane.localRotationY -= 2;
	//camera.localRotationY -= 2;
	}
	else if (keyLeft)
	{
	paperPlane.localRotationY += 2;
	//camera.localRotationY += 2;
	}*/
	private function goPlayer(e:Event):void
	{
 
	}
	public function ModelWasLoaded(e:FileLoadEvent):void
	{
		//model
		scene.addChild(model);
		knopka.addEventListener(MouseEvent.CLICK, createWorldBox);
	}
	private function setupPapervision3D():void
	{
		/*viewport.autoScaleToStage = true;
		camera.focus = 20;*/
 
	}
	private function createBigSphere():void
	{
		model2 = new ArbitraryActor3(scene,Globals.STAGE_WIDTH * .3,Globals.STAGE_HEIGHT * .5,100,100,1000,model);
		worldActorsArray.push(model2);
		camera.target = model2.mesh;
 
	}
	override protected function onRenderTick(e:Event=null):void
	{
		if (keyForward)
		{
			model2.getBody().SetLinearVelocity(new b2Vec2(4,0));
			//camera.moveForward (30);
		}
	else if (keyBackward)
	{
		model2.getBody().SetLinearVelocity(new b2Vec2(-4,0));
	}
	//camera.moveBackward (30);
	PhysiVals.world.Step(1/stage.frameRate, 10);
	for (var i:int = 0; i < worldActorsArray.length; i++)
	{
		worldActorsArray[i].updateNow();
	}
	super.onRenderTick();
}
private function createWorldBox(e:MouseEvent):void
{
	//создаем внешние границы мира 
	/*var wall1:ArbitraryActor2 = new ArbitraryActor2(scene, 0, 0, 1300, 10, 20);
	wall1.setUserData = "WALL";*/
	var wall2:ArbitraryActor2 = new ArbitraryActor2(scene,0,700,1300,10,20);
	wall2.setUserData = "DOWN";
	/*var wall3:ArbitraryActor2 = new ArbitraryActor2(scene, -10, 0, 10, 700, 20);
	wall3.setUserData = "WALL";
	var wall4:ArbitraryActor2 = new ArbitraryActor2(scene, 1300, 0, 10,700, 20);
	wall4.setUserData = "WALL";*/
 
	worldActorsArray.push(wall2);
	createBigSphere();
}
private function setupDebugDraw():void
{
	var spriteToDrawOn:Sprite = new Sprite();
	addChild(spriteToDrawOn);
 
	var artistForHire:b2DebugDraw = new b2DebugDraw();
	artistForHire.m_sprite = spriteToDrawOn;
	artistForHire.m_drawScale = PhysiVals.RATIO;
	artistForHire.m_drawFlags = b2DebugDraw.e_shapeBit | b2DebugDraw.e_jointBit;
	artistForHire.m_lineThickness = 2.0;
	artistForHire.m_fillAlpha = 0.6;
 
	PhysiVals.world.SetDebugDraw(artistForHire);
}
function setupWorld():void
{
	var worldBounds:b2AABB = new b2AABB();
	worldBounds.lowerBound.Set( -5000 / PhysiVals.RATIO, -5000 / PhysiVals.RATIO);
	worldBounds.upperBound.Set(5000 / PhysiVals.RATIO, 5000 / PhysiVals.RATIO);
 
	var gravity:b2Vec2 = new b2Vec2(0,9.8);
	var isSleep:Boolean = false;
 
	PhysiVals.world = new b2World(worldBounds,gravity,isSleep);
	PhysiVals.world.SetContactListener(new myContactListener());
 
}
}
}

Создать новую тему   Часовой пояс GMT +4, время: 00:15.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:15.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.