| Alex Lexcuk |
07.03.2012 15:12 |
redefy, статью уже читал, но что-то не получается
Код AS3:
package {
import away3d.cameras.*;
import away3d.containers.*;
import away3d.controllers.*;
import away3d.debug.*;
import away3d.entities.*;
import away3d.extrusions.*;
import away3d.lights.*;
import away3d.materials.*;
import away3d.materials.lightpickers.*;
import away3d.materials.methods.*;
import away3d.primitives.*;
import away3d.textures.*;
//import com.bit101.components.Label;
import flash.display.*;
import flash.events.*;
import flash.filters.*;
import flash.geom.*;
import flash.net.*;
import flash.ui.*;
import flash.utils.*;
import flash.display.*;
import flash.events.*;
/**
* Alternativa3D "Hello world!" application.
* Создание простейшего трёхмерного приложения.
*/
public class HelloAlternativa3DtoAway3d extends Sprite {
//private var rootContainer:Object3D = new Object3D();//Alternativa
private var rootContainer:ObjectContainer3D = new ObjectContainer3D();//Away3d
private var camera:Camera3D;//Away3d Alternativa
private var stage3D:Stage3D;//Alternativa
//private var box:Box;//Alternativa
private var box:Mesh;//Away3d
private var view:View3D//Away3d
public function HelloAlternativa3DtoAway3d() {
// Ресурсы
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));
//кон альтернатива
//нач авей
var grass_diffuse:BitmapTexture = new BitmapTexture(new BitmapData(2, 2, false, 0xFF0000));
var grass_normal:BitmapTexture = new BitmapTexture(new BitmapData(2, 2, false, 0x7F7FFF));
var box_normal:BitmapTexture = new BitmapTexture(new BitmapData(2, 2, 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);
//кон алт
//нач аве
var scene:Scene3D = new Scene3D();
//setup camera for optimal shadow rendering
camera = new Camera3D();
camera.lens.far = 2100;
view = new View3D();
view.scene = scene;
view.camera = camera;
//setup controller to be used on the camera
//cameraController = new HoverController(camera, null, 45, 20, 1000, 10);
//setup parser to be used on loader3D
//Parsers.enableAllBundled();
//view.addSourceURL("srcview/index.html");
addChild(view);
//кон аве
// Initial position
// Установка положения камеры
//нач аль
//camera.rotationX = -120*Math.PI/180;
//camera.y = -800;
//camera.z = 400;
//rootContainer.addChild(camera);
//кон аль
//нач аве
camera.rotationX = -120*Math.PI/180;
camera.z = -800;
camera.y = 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);
//кон аль
//нач аве
var directionalLight:DirectionalLight = new DirectionalLight(-1, -1, 1);
directionalLight.y = 20000;
directionalLight.z = -20000;
directionalLight.x = 20000;
//directionalLight.intensity = 1;//кто-то знает
directionalLight.lookAt(new Vector3D(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);
//кон альт
//нач аве
var boxG:CubeGeometry = new CubeGeometry(250, 250, 250, 1, 1, 1);
box = new Mesh(boxG);
box.y = 200;
var material:TextureMaterial = new TextureMaterial(box_normal);// , box_normal);
box.material = material;
rootContainer.addChild(box);
var plane:Mesh = new Mesh(new PlaneGeometry(1000, 1000));
var planeMaterial:TextureMaterial = new TextureMaterial(grass_diffuse);// , grass_normal);
plane.material = 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);//Away3d Alternativa
}
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);
//кон аль
//нач авей
box.rotationY -= 0.01;
view.render();
//кон авей
}
}
}
Работа выполнена на 90%
Перевод на авей +
Куб +
План +
Камера +
Нифига на видно -
Теней от куба нет -
|