ANyone, please?

On 23 Jun., 13:14, rowild <[email protected]> wrote:
> Hi,
>
> Beign a newbie, I work myself through the Away3D book by FriendsOf Ed
> and fooling around with the samples. Now I am confused, because there
> is a sample with three objects in it (a cube, a sphere, and a monkey),
> using DirectionalLight3D and some Dot3BitmapMaterial.
>
> The thing that appears wrong to me is that the monkey is lit correctly
> from the top (camera.tiltAngle = 10), but the primitives are lit from
> below. The picture in the book shows a correct result though.
>
> Can anybody give me a hint where my mistake is?
>
> This is the code:
>
> // Base Class (to be extended)
> package
> {
>         import away3d.cameras.*;
>         import away3d.containers.*;
>         import away3d.primitives.*;
>
>         import assets.*;
>
>         import flash.display.*;
>         import flash.events.*;
>
>         [SWF(width = "800",height = "600")]
>
>         public class Away3D_BaseClass5 extends Sprite
>         {
>                 protected var _view:View3D;
>                 protected var _camera:HoverCamera3D;
>                 protected var _cube:Cube;
>                 protected var _sphere:Sphere;
>                 protected var _ape:MonkeyMesh;
>
>                 protected var _state:int = 0;
>
>                 public function Away3D_BaseClass5 ()
>                 {
>                         _createView ();
>                         _createScene ();
>                         _createMaterials ();
>
>                         trace("Constructor called");
>                 }
>
>                 protected function _createView ():void
>                 {
>                         // create the Camera
>                         _camera = new HoverCamera3D;
>                         _camera.distance = 150;
>                         _camera.tiltAngle = 10;
>
>                         _view = new View3D();
>                         _view.x = 400;
>                         _view.y = 300;
>                         _view.camera = _camera;
>                         addChild (_view);
>
>                         stage.addEventListener (Event.ENTER_FRAME, 
> _onEnterFrame);
>                         stage.addEventListener (MouseEvent.CLICK, _onClick);
>                 }
>
>                 protected function _createScene ():void
>                 {
>                         // create the primiteves
>                         _cube = new Cube();
>                         _cube.width = 30;
>                         _cube.height = 30;
>                         _cube.depth = 30;
>                         _cube.x = -70;
>                         _view.scene.addChild (_cube);
>
>                         _sphere = new Sphere({material:"blue#cyan"});
>                         _sphere.radius = 25;
>                         _sphere.x = 70;
>                         _sphere.y = 0;
>                         _sphere.rotationX = 180;
>                         _sphere.segmentsW = 16;
>                         _sphere.segmentsH = 10;
>                         //_sphere.yUp = false;
>                         _view.scene.addChild (_sphere);
>
>                         _ape = new MonkeyMesh();
>                         _ape.scale(2.5);
>                         _view.scene.addChild (_ape);
>                 }
>
>                 protected function _createMaterials ():void
>                 {
>                         // to be overridden
>                 }
>
>                 protected function _toggle ():void
>                 {
>                         // overridden
>                 }
>
>                 protected function _onClick (ev:MouseEvent):void
>                 {
>                         _toggle();
>                 }
>
>                 protected function _onEnterFrame (ev:Event):void
>                 {
>                         // define camera bahaviour and render scene
>                         if(stage.mouseX < 130 || stage.mouseX > 450)
>                         {
>                                 _camera.panAngle -= (stage.mouseX - 
> stage.stageWidth/2) / 100;
>                                 _camera.hover();
>                         }
>                         else
>                         {
>                                 _camera.hover();
>                         }
>
>                         _view.render();
>                 }
>         }
>
> }
>
> // Normal Maps
> package
> {
>         import away3d.core.math.*;
>         import away3d.core.utils.*;
>         import away3d.lights.*;
>         import away3d.materials.*;
>         import away3d.primitives.*;
>
>         import flash.display.*;
>         import flash.events.*;
>
>         [SWF(width = "800",height = "600")]
>
>         public class Away3D_NormalMaps extends Away3D_BaseClass5
>         {
>                 private var _dirLight:DirectionalLight3D;
>                 private var _angle:Number = 0;
>
>                 public static const RADS_PRE_DEG:Number = Math.PI / 180;
>
>                 [Embed("assets/ch05/sphere_normals.jpg")]
>                 private var SphereNormal:Class;
>
>                 [Embed("assets/ch05/ape_normals.jpg")]
>                 private var ApeNormal:Class;
>
>                 [Embed("assets/ch05/cube_normals.jpg")]
>                 private var CubeNormal:Class;
>
>                 [Embed("assets/ch05/redapple.jpg")]
>                 private var AppleImage:Class;
>
>                 public function Away3D_NormalMaps ()
>                 {
>                         super ();
>                         _cube.mappingType = CubeMappingType.MAP6;
>                         _createLights ();
>                 }
>
>                 protected function _createLights ():void
>                 {
>                         _dirLight = new DirectionalLight3D();
>                         _dirLight.direction = new Number3D(70,500,70);
>                         _dirLight.ambient = 0.1;
>                         _dirLight.diffuse = 0.5;
>                         _dirLight.specular = 1;
>                         _dirLight.brightness = 2;
>
>                         _view.scene.addLight (_dirLight);
>                 }
>
>                 override protected function _createMaterials ():void
>                 {
>                         var texture:BitmapData = Cast.bitmap(AppleImage);
>                         var sphereMap:BitmapData = Cast.bitmap(SphereNormal);
>                         var apeMap:BitmapData = Cast.bitmap(ApeNormal);
>                         var cubeMap:BitmapData = Cast.bitmap(CubeNormal);
>
>                         var sphereMaterial:Dot3BitmapMaterial;
>                         sphereMaterial = new 
> Dot3BitmapMaterial(texture,sphereMap);
>                         sphereMaterial.specular = 0xFFFFFF;
>
>                         var apeMaterial:Dot3BitmapMaterial;
>                         apeMaterial = new Dot3BitmapMaterial(texture,apeMap);
>                         apeMaterial.specular = 0xFFFFFF;
>
>                         var cubeMaterial:Dot3BitmapMaterial;
>                         cubeMaterial = new 
> Dot3BitmapMaterial(texture,cubeMap);
>                         cubeMaterial.specular = 0xFFFFFF;
>
>                         _cube.material = cubeMaterial;
>                         _cube.ownCanvas = true;
>
>                         _sphere.material = sphereMaterial;
>                         _sphere.ownCanvas = true;
>
>                         _ape.material = apeMaterial;
>                         _ape.ownCanvas = true;
>                 }
>
>                 override protected function _onEnterFrame(ev:Event):void
>                 {
>                         /*
>                         _angle = (_angle + 5) % 360;
>                         var x:Number = 100 * Math.cos(RADS_PER_DEG * _angle);
>                         var y:Number = 50 * Math.cos(RADS_PER_DEG * _angle);
>                         var z:Number = 100 * Math.sin(RADS_PER_DEG * _angle);
>
>                         _dirLight.direction = new Number3D(-x,-y,-z);
>                         */
>                         super._onEnterFrame(ev);
>                 }
>         }
>
> }
>
> Thanks a lot!!

Reply via email to