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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

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

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
По умолчанию Papervision3D, loockAt(camera) не работает внутри контейнера

Вот пример, демонстрирующий мою проблему ( в 73 строчке).
Как сделать плоскости _sat1 и _sat2 всегда смотрящими на камеру?

Код AS3:
package
{
	import org.papervision3d.core.math.Number3D;
	import org.papervision3d.lights.PointLight3D;
	import org.papervision3d.materials.ColorMaterial;
	import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
	import org.papervision3d.materials.shadematerials.GouraudMaterial;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.objects.primitives.Sphere;
	import org.papervision3d.view.BasicView;
 
	import flash.events.Event;
 
	/**
	 * Class ContainedLoockAt ...
	 * @author Yuriy (Mur4ik) Kulkoff
	 * @version 0.1
	 * @date 27.08.2009
	 */
	public class ContainedLoockAt extends BasicView
	{
		private var _earth:Sphere;
		private var _sat1:Satellite;
		private var _sat2:Satellite;
 
		public function ContainedLoockAt() 
		{
			camera.zoom = 150;
 
			var lite:PointLight3D = new PointLight3D();
 
			_earth = new Sphere(new FlatShadeMaterial(lite, 0x0055FF, 0x000051), 90, 16, 12);
			_earth.rotationZ = -23;
 
			var matForSat1:ColorMaterial = new ColorMaterial(0xFFFF00);
				matForSat1.doubleSided = true;
 
			_sat1 = new Satellite(matForSat1, 20, 20, 110, 6);
			_sat1.pivot = new DisplayObject3D();
			_sat1.pivot.rotationZ = -45;
			_sat1.pivot.addChild(_sat1);
 
			var matForSat2:ColorMaterial = new ColorMaterial(0xFF0000);
				matForSat2.doubleSided = true;
 
			_sat2 = new Satellite(matForSat2, 15, 15, 120, 5);
			_sat2.pivot = new DisplayObject3D();
			_sat2.pivot.rotationZ = 45;
			_sat2.pivot.addChild(_sat2);
 
			scene.addChild(_earth);
			scene.addChild(_sat1.pivot);
			scene.addChild(_sat2.pivot);
 
			startRendering();
		}
 
		private function orbitCameraTween():void
		{
			camera.x -= (camera.x - Math.sin(mouseX * 0.01) * 1000) / 8;
			camera.y -= (camera.y - viewport.containerSprite.mouseY * 5) / 8;
			camera.z -= (camera.z - Math.cos(mouseX * 0.01) * 1000) / 8;
		}
 
		protected override function onRenderTick(event:Event = null):void
		{
			_earth.yaw(.3);
 
			_sat1.satelliteMove();
			_sat2.satelliteMove();
 
			// вот эти 2 строчки не дают никакого эффекта
			_sat1.lookAt(camera);
			_sat2.lookAt(camera);
 
			orbitCameraTween();
 
			renderer.renderScene(scene, camera, viewport);
		}
	}
 
}
 
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.core.proto.MaterialObject3D;
 
internal class Satellite extends Plane
{
	public var pivot:DisplayObject3D;
 
	private var _angle:Number;
 
	public function Satellite(material:MaterialObject3D, w:int = 20, h:int = 20, distance:int = 150, speed:int = 1)
	{
		super(material, w, h);
 
		this.x = distance;
 
		_angle = (0.5 * speed) % 360;
	}
 
	public function satelliteMove():void
	{
		pivot.yaw(_angle);
	}
}
Или вообще как любой объект, находящийся внутри другого объекта сделать всегда повернутым к камере?
__________________
trace("Остановите Землю, я сойду!!!");

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

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

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


 


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


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