package
{
import com.yogurt3d.Yogurt3D;
import com.yogurt3d.core.events.Yogurt3DEvent;
import com.yogurt3d.core.lights.Light;
import com.yogurt3d.core.materials.MaterialDiffuseFill;
import com.yogurt3d.core.materials.MaterialFill;
import com.yogurt3d.core.sceneobjects.SceneObject;
import com.yogurt3d.presets.primitives.sceneobjects.BoxSceneObject;
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Vector3D;
[SWF(width="400", height="300")] // initialize SWF size to be 800 by 600
public class BasicLight extends Sprite
{
// мы определили переменную SceneObject как элемент: box типа BoxSceneObject public var box:BoxSceneObject;
// начальная точка: иннициализируем движок Yogurt3D public function BasicLight()
{
Yogurt3D.instance.addEventListener( Yogurt3DEvent.READY, onContextReady );
// инициализируем Yogurt3D событие Yogurt3D.instance.init( this.stage );
}
// создадим сцену и начнём отображение когда Context3D будет готов public function onContextReady( _e:Event ):void{
// здесь мы инициализируем сцену. ничего на экран не выводится пока. // инициализируйте ваш Yogurt3D с произвольными установками (scene, camera, renderer и т.д.) Yogurt3D.instance.defaultSetup(400,300);
// изменим цвет фона на сцене (сцена по умолчанию) на красный (0xFF0000 in hex rgb) Yogurt3D.instance.defaultScene.sceneColor = 0xEFEFEF;
// создадим actual box обьект с произвольными параметрами (в начале координат) box = new BoxSceneObject();
// добавим материал в box: заполним зелёным, непрозрачным диффузором box.material = new MaterialDiffuseFill( 0x00FF00,1 );
// просто добавим box на сцену. box появится произвольно на сцене Yogurt3D.instance.defaultScene.addChild( box );
// установки камеры
// мы имеем камеру по умолчанию на сцене. давайте изменим её положение на -20 по оси z Yogurt3D.instance.defaultCamera.transformation.position = new Vector3D( 0,10,-30 );
// и пусть камера смотрит на начало координат (0,0,0) Yogurt3D.instance.defaultCamera.transformation.lookAt( new Vector3D );
// редактирование света
// мы создадим новый источник света с произвольными параметрами.
// направление света, значит, что световые лучи параллельны, так же как если бы они приходили из источника в бесконечности. var light:Light = new Light( Light.DIRECTIONAL_LIGHT );
// установим позицию источника света light.transformation.position = new Vector3D(-10,45,-10);
// и он направляется на сцену light.transformation.lookAt( new Vector3D );
// добавим вновь созданный световой обьект на сцену Yogurt3D.instance.defaultScene.addChild( light );
// сейчас мы готовы отобразить сцену // начало рендеринга Yogurt3D.instance.startAutoUpdate();
// регистрация обратного вызова функции названа до отображения каждого кадра Yogurt3D.instance.enginePreUpdateCallback = onEnterFrame;
}
// это называется перед отрисовкой каждого кадра: вращение box'a вокруг оси y public function onEnterFrame( ):void{
box.transformation.rotationY+=
1; //
добавление вращения на 1 градус }
добавление вращения на 1 градус }
}
этот и предыдущий урок можно найти
на странице
http://www.yogurt3d.com/support/tutorials по заголовкам Quik Start tutorial и Basic lighting tutorial