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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 09.03.2012, 00:49
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 1  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
По умолчанию Как сделать Декали (следы шин, пуль) в away3d

Тут есть пример с кровью http://redefy.net/2011/10/28/%d1%83%...api-chapter-3/
Надо подобное для away, что-то не нашел (наверняка есть), набросал простой танк который едет на плоскости
Код AS3:
package {
	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 flash.display.*;import flash.events.*;import flash.geom.*;import flash.ui.*;
 
	/**
	 * попытка следов шин.
	 */
	public class CarAway3d extends Sprite {
		private var container:ObjectContainer3D;
		private var box:Mesh;
		private var plane:Mesh;
		private var view:View3D;
 
		private var move:Boolean, revers:Boolean, right:Boolean, left:Boolean;
		private var carPos:Point = new Point(), carRotation:Number = 0;
 
		//private var controller:SimpleObjectController;
 
		public function CarAway3d() {
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
 
			init();
		}
 
		private function init():void {
			view = new View3D();
			view.camera.lens.far = 10000;
			view.camera.moveTo( -170, 1361, -1221);
			view.camera.rotateTo(45, 2, 0);
			addChild(view);
 
			container = new ObjectContainer3D();
			view.scene.addChild(container);
 
			var sunLight:DirectionalLight = new DirectionalLight( -1, -0.4, 1);
			with (sunLight) { color = 0xFFFF80; castsShadows = true; ambient = 1; diffuse = 1; specular = 1; }
			container.addChild(sunLight);
 
			var lightPicker:StaticLightPicker = new StaticLightPicker([sunLight]); 
			var filteredShadowMapMethod:SoftShadowMapMethod = new SoftShadowMapMethod(sunLight);
			filteredShadowMapMethod.epsilon = 0.005;
 
			var material:TextureMaterial = new TextureMaterial(new BitmapTexture(new BitmapData(2, 2, false, 0xFF0000)), true, true);
			material.lightPicker = lightPicker;
			material.shadowMethod = filteredShadowMapMethod;
			material.ambient = 0.5;
			container.addChild(box = new Mesh(new CubeGeometry(100, 50, 200, 1, 1, 1), material));
 
 
 
			material = new TextureMaterial(new BitmapTexture(new BitmapData(2, 2, false, 0x00FF00)), true, true);
			material.lightPicker = lightPicker;
			material.shadowMethod = filteredShadowMapMethod;
			material.ambient = 0.5;
			container.addChild(plane = new Mesh(new PlaneGeometry(3000, 3000), material)).y = -20;
 
 
			stage.addEventListener(KeyboardEvent.KEY_DOWN, keyHandler);
			stage.addEventListener(KeyboardEvent.KEY_UP, keyHandler);
 
			stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
 
		private function onEnterFrame(e:Event):void {
			var m:Matrix = new Matrix();
			if (move) m.translate(0,10); if (revers) m.translate( 0,-10);
			if (right) m.rotate(carRotation-=0.1); if (left) m.rotate( carRotation+=0.1);
			if (!left && !right) m.rotate(carRotation);
			carPos = carPos.add(m.transformPoint(new Point()));
 
			box.rotationY = -carRotation * (180 / Math.PI);; //в градусах
			box.x = carPos.x;
			box.z = carPos.y;
			view.render();
		}
 
		private function keyHandler(e:KeyboardEvent):void {
			var k:int = e.keyCode; //w - 87 a - 65 d - 68 s - 83
			if (e.type == KeyboardEvent.KEY_DOWN) var t:Boolean = true;
			if (k == Keyboard.UP || k == 87) move = t;
			if (k == Keyboard.DOWN || k == 83) revers = t;
			if (k == Keyboard.RIGHT || k == 68) right = t;
			if (k == Keyboard.LEFT || k == 65) left = t;
		}
 
	}
}
Надо как-то на большой плоскости отрисовать траекторию езды
Код AS3:
			box.x = carPos.x;
			box.z = carPos.y;
Ну или хоть что-то отрисовать, можно конечно плоскости добавлять вместо следов, но это не то что надо, будет некрасиво.
__________________
Гоночка

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

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

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


 


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


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