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

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

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

Регистрация: Feb 2011
Адрес: Украина Днепропетровск
Сообщений: 106
По умолчанию Всегда лицом к пользователю

Хочу что бы ObjectContainer3D всегда был повернут лицом к пользователю, типа Sprite3D.

Старый 29.03.2013, 14:24
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 2  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Код AS3:
ObjectContainer3D.lookAt(view.camera.position);
__________________
Гоночка

Старый 29.03.2013, 21:42
vorodis2 вне форума Посмотреть профиль Отправить личное сообщение для vorodis2 Найти все сообщения от vorodis2
  № 3  
Ответить с цитированием
vorodis2

Регистрация: Feb 2011
Адрес: Украина Днепропетровск
Сообщений: 106
Чо то не сработало, может я где то туплю))
Пишу свои компоненты для away
http://vorodis2.com/datanew/script/bin/
Исходник
http://vorodis2.com/datanew/arhiv/komponent.rar
Может глянете? Класс VorWindow.as функция dwig (работает если дать aaCamera, в том методе особо и не нужна, но как я понимаю это можно сделать только с Camera всего мира, по этому там ее и подключил)

Старый 30.03.2013, 13:43
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 4  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
В исходнике не разобрался, возможно ещё надо
Код AS3:
				dir = Matrix3DUtils.getRight(view.camera.transform);
				container.lookAt(view.camera.position, dir);
пример набросал с 9 кубиками (четко лицом к пользователю)
Код AS3:
package  
{
	import away3d.animators.*;import away3d.core.partition.*;
	import away3d.events.*;import away3d.cameras.lenses.*;
	import away3d.core.base.*;import away3d.core.math.*;
	import away3d.library.assets.*;import away3d.debug.*;
	import away3d.cameras.*;import away3d.containers.*;import away3d.entities.*;
	import away3d.lights.*; import away3d.materials.*;
	import away3d.materials.lightpickers.*;
	import away3d.materials.methods.*; import away3d.primitives.*; 
	import away3d.textures.*;import away3d.filters.*;
	import away3d.materials.utils.*;import away3d.primitives.data.*;
 
	import flash.display.*; import flash.events.*; import flash.system.*; 
	import flash.ui.*; import flash.utils.*; import flash.sampler.*; 
	import flash.net.*; import flash.media.*; import flash.net.*; 
	import flash.external.*; import flash.text.*;
	import flash.geom.*;
	/**
	* ...
	* @author Lexcuk
	*/
	public class TestLookAtDoc extends Sprite
	{
		private var container:ObjectContainer3D;
		public var sprite:Sprite;
		public var view:View3D;
 
		private var containerArr:Array;
 
		private var blaMaterial:TextureMaterial;
		private var hrefTxt:TextField;
		private var nArr:Array;
		public function TestLookAtDoc() 
		{
		view = new View3D(); 
		view.camera.lens.far = 5000;
		view.camera.lens.near = 1;
 
		//view.camera.moveTo( 0, 1000, 0);
		view.camera.moveTo( 1000, 500, 300);
		//view.camera.moveTo( 300, 500, 1000);
 
		view.camera.lookAt(new Vector3D(0, 0, 0))
 
		sprite = new Sprite();
		sprite.addChild(view);
		sprite.addChild(new AwayStats(view));
 
		addChild(sprite);
 
		var perlinBitmap:BitmapData = getPerlinBmd();
		container = new ObjectContainer3D();
 
		view.scene.addChild(container);
		var sunLight:DirectionalLight = new DirectionalLight( -1, -0.4, 1);
		//with (sunLight) { color = 0xFFFF80; castsShadows = true; ambient = diffuse = specular = 1; }
		container.addChild(sunLight);
 
		var bgMesh:Mesh = new Mesh(new PlaneGeometry(1000, 1000));;
 
		var bgMaterial:TextureMaterial = new TextureMaterial(new BitmapTexture(perlinBitmap), false, true);
		bgMesh.material = bgMaterial;
 
		container.addChild(bgMesh);
 
		blaMaterial = mekeBlaMaterial();
 
		containerArr = [];
		var con:ObjectContainer3D;
		nArr = ['A', 'B', 'C', 'D', 'E', 'G', 'H', 'K','L','M','N','O','P'];
		for (var i:int; i < 9; i++) {
			container.addChild(con = makeContainer(
			300-int(i / 3) * 300,
			300-int(i % 3) * 300,
			nArr[i]
			));
			containerArr.push(con);
			con.lookAt(view.camera.position, Vector3D.Z_AXIS);
		}
 
 
		sprite.addChild(hrefTxt = new TextField());
		hrefTxt.border = true;
		hrefTxt.background = true;
		hrefTxt.backgroundColor = 0xFFFFFF;
		hrefTxt.autoSize = TextFieldAutoSize.LEFT;
		hrefTxt.x = 200;
 
		var htmStr:String = '';
		htmStr = addStrHref('camA') + addStrHref('camB') + addStrHref('camC');
		for (i = 0; i < 9; i++) htmStr += addStrHref(nArr[i]);
		htmStr +=  addStrHref('поставить всё')
		hrefTxt.htmlText = htmStr;
		hrefTxt.addEventListener("link", txtNavHandler);
 
		addEventListener(Event.ENTER_FRAME, enterFrameHandler);
	}
 
	private function txtNavHandler(e:TextEvent):void {
		if (e.text == 'camA') view.camera.moveTo( 0, 1000, 0);
		if (e.text == 'camB') view.camera.moveTo( 1000, 500, 300);
		if (e.text == 'camC') view.camera.moveTo( 300, 500, 1000);
		view.camera.lookAt(new Vector3D(0, 0, 0));
		for (var i:int; i < 9; i++) {
			var dir:Vector3D = Matrix3DUtils.getRight(view.camera.transform);
			if (e.text == nArr[i]) {
				containerArr[i].lookAt(view.camera.position, dir);
			}
		}
		if (e.text == 'поставить всё') {
			for (i=0; i < 9; i++) {
				dir = Matrix3DUtils.getRight(view.camera.transform);
				containerArr[i].lookAt(view.camera.position, dir);
			}
		}
	}
 
	private function addStrHref(str:String, delimStr:String = ' | '):String {
		return "<a href='event:" + str + "'>" + str + "<u></u>"+delimStr; 
	}
 
	private function enterFrameHandler(e:Event):void {
		view.render();
	}
 
	public function makeContainer(posX:Number,  posY:Number, str:String = 'A'):ObjectContainer3D {
		var con:ObjectContainer3D = new ObjectContainer3D();
 
		var c3:ObjectContainer3D = new ObjectContainer3D();
		var cM:Mesh = new Mesh(new CubeGeometry(100, 100, 100), blaMaterial);
		var pM:Mesh = new Mesh(new PlaneGeometry(100, 100, 1, 1), makeAMaterial(str));
		c3.addChild(cM);
		c3.addChild(pM);
		pM.position = new Vector3D(0, 51, 0);
		c3.rotationX = 90;
		c3.rotationZ = 90;
 
		con.addChild(c3);
		con.position = new Vector3D(posX, 50, posY);
		return con;
	}
 
	public  function mekeBlaMaterial():TextureMaterial {
		var txt:TextField = new TextField();
		for (var i:int; i < 100; i++) txt.appendText('bla bla blabla bla blabla bla bla\n');
		txt.autoSize = TextFieldAutoSize.LEFT;
		var tbmd:BitmapData = new BitmapData(128, 128);
		var m:Matrix = new Matrix();
		tbmd.draw(txt,m);
		return new TextureMaterial(new BitmapTexture(tbmd), false, true);
	}
 
	public function makeAMaterial(str:String = 'A'):TextureMaterial {
		var txt:TextField = new TextField();
		txt.text = str;
		var tbmd:BitmapData = new BitmapData(128, 128);
		var m:Matrix = new Matrix();
		m.ty = -4;
		m.tx = -1;
		m.scale(13, 13);
		tbmd.draw(txt,m);
		return new TextureMaterial(new BitmapTexture(tbmd), false, true);
	}
 
	public function getPerlinBmd():BitmapData {
		var s:Number = 512;
		var bitmapData:BitmapData = new BitmapData(s, s, true);
		var numOctaves:Number = 1;
		bitmapData.perlinNoise(25, 52, 1, 1314, false, false, 10, false)
		var sp:Sprite = new Sprite();
		sp.graphics.beginFill(0xFFFFFF);
		sp.graphics.drawRect(0, 0, s, s);
		sp.addChild(new Bitmap(bitmapData));
		var resBitmap:BitmapData = new BitmapData(s, s, true);
		resBitmap.draw(sp);
		return resBitmap;
	}
 
   }
 
}
__________________
Гоночка

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

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

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


 


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


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