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

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

Есть такой код Alternativa3D_8.27.0
Код AS3:
package {
 
	import alternativa.engine3d.controllers.*;
	import alternativa.engine3d.core.*;
	import alternativa.engine3d.lights.*;
	import alternativa.engine3d.materials.*;
	import alternativa.engine3d.primitives.*;
	import alternativa.engine3d.resources.*;
	import alternativa.engine3d.shadows.*;
 
	import flash.display.*;
	import flash.events.*;
 
	/**
	 * Alternativa3D "Hello world!" application. 
	 * Создание простейшего трёхмерного приложения.
	 */
	public class HelloAlternativa3D extends Sprite {
		private var rootContainer:Object3D = new Object3D();
		private var camera:Camera3D;
		private var stage3D:Stage3D;
		private var box:Box;
 
		public function HelloAlternativa3D() {
			// Ресурсы
 
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
 
 
			stage3D = stage.stage3Ds[0];
			stage3D.addEventListener(Event.CONTEXT3D_CREATE, onContextCreate);
			stage3D.requestContext3D();
		}
 
		private function onContextCreate(e:Event):void {
			//ресурсы
			var grass_diffuse:BitmapTextureResource = new BitmapTextureResource(new BitmapData(1, 1, false, 0xFF0000));
 
			var grass_normal:BitmapTextureResource = new BitmapTextureResource(new BitmapData(1, 1, false, 0x7F7FFF));
 
			var box_normal:BitmapTextureResource = new BitmapTextureResource(new BitmapData(1, 1, false, 0xFFFFFF));
 
			grass_diffuse.upload(stage3D.context3D);
			grass_normal.upload(stage3D.context3D);
			box_normal.upload(stage3D.context3D);
 
			// Camera and view
			// Создание камеры и вьюпорта
			camera = new Camera3D(0.1, 10000);
			camera.view = new View(stage.stageWidth, stage.stageHeight, false, 0, 0, 4);
			addChild(camera.view);
			addChild(camera.diagram);
 
			// Initial position
			// Установка положения камеры
			camera.rotationX = -120*Math.PI/180;
			camera.y = -800;
			camera.z = 400;
			rootContainer.addChild(camera);
 
			// Light sources
			// Источники света
			var ambientLight:AmbientLight = new AmbientLight(0x333333);
			ambientLight.intensity = 3;
			rootContainer.addChild(ambientLight);
 
			var directionalLight:DirectionalLight = new DirectionalLight(0xFFFF99);
 
			directionalLight.z = 20000;
			directionalLight.y = -20000;
			directionalLight.x = 20000;
			directionalLight.intensity = 1;
 
			directionalLight.lookAt(2000, 0, 0);
			//rootContainer.addChild(directionalLight);
 
			// Primitive box
			// Создание примитива
			box = new Box(250, 250, 250, 1, 1, 1, true);
			box.z = 200;
			var material:StandardMaterial = new StandardMaterial(box_normal, box_normal);
			box.setMaterialToAllSurfaces(material);
			rootContainer.addChild(box);
 
 
			var plane:Plane = new Plane(1000, 1000);
			var planeMaterial:StandardMaterial = new StandardMaterial(grass_diffuse, grass_normal);
			plane.setMaterialToAllSurfaces(planeMaterial);
 
			rootContainer.addChild(plane);
 
 
			// Shadow
			// Тень
			var shadow:DirectionalLightShadow = new DirectionalLightShadow(1000, 1000, -500, 500, 512, 2);
			shadow.biasMultiplier = 0.97;
			shadow.addCaster(plane);
			shadow.addCaster(box);
			directionalLight.shadow = shadow;
 
 
			for each (var resource:Resource in rootContainer.getResources(true)) {
				resource.upload(stage3D.context3D);
			}
 
 
			// Listeners
			// Подписка на события
			stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
 
		private function onEnterFrame(e:Event):void {
			// Width and height of view
			// Установка ширины и высоты вьюпорта
			camera.view.width = stage.stageWidth;
			camera.view.height = stage.stageHeight;
 
			// Rotation
			// Вращение примитива
			box.rotationZ -= 0.01;
 
			// Render
			// Отрисовка
			camera.render(stage3D);
		}
 
	}
}
Мне хочется собрать простейший пример с тенью. Вот если раскоментировать строку
Код AS3:
//rootContainer.addChild(directionalLight);
то тень появляется, но куб становится чёрным
Как этот простейший пример перевести на away (away3d-core-fp11_4_0_0_beta.swc)
Нужно что-бы была тень от куба на план. В авэй сильно сложные и тяжёлые примеры.
__________________
Гоночка