Hi all, I'm trying to use the NormalMapGenerator, but I seem to make a mistake somewhere. I don't see where...
Following the discussions about NormalMapGenerator, I put the code below
package {
import Math;
import away3d.cameras.HoverCamera3D;
import away3d.containers.View3D;
import away3d.core.base.Mesh;
import away3d.core.math.Number3D;
import away3d.core.utils.Cast;
import away3d.events.MouseEvent3D;
import away3d.events.TraceEvent;
import away3d.lights.DirectionalLight3D;
import away3d.lights.PointLight3D;
import away3d.materials.BitmapMaterial;
import away3d.materials.PhongBitmapMaterial;
import away3d.materials.Dot3BitmapMaterial;
import away3d.materials.utils.NormalMapGenerator;
import away3d.primitives.Cube;
import away3d.primitives.Sphere;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.Event;
public class NormalMapGeneratorExample extends Sprite {
[Embed(source="assets/gold_texture2.jpg")]
public static var goldTexture:Class;
private var _view : View3D = new View3D();
private var sphere : Sphere = new Sphere({radius: 1000, segmentsH:35,
segmentsW:35, material:null});
private var mat : Dot3BitmapMaterial;
private var camera : HoverCamera3D;
private var lightD : DirectionalLight3D;
private var lightP : PointLight3D;
private var mapgen : NormalMapGenerator;
private var colorsource : BitmapData;
public function NormalMapGeneratorExample():void {
_view.x = 275;
_view.y = 200;
addChild(_view);
colorsource = Cast.bitmap(goldTexture);
mapgen = new NormalMapGenerator(sphere, 800, 200);
mapgen.addOnTraceComplete(traceComplete);
initLights();
initCamera();
mat = new Dot3BitmapMaterial(colorsource, colorsource);
sphere.material = mat;
_view.scene.addChild(sphere);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function traceComplete(e:TraceEvent):void {
mat = new Dot3BitmapMaterial(colorsource, mapgen.normalMap);
sphere.material = mat;
}
private function initLights():void {
lightD = new DirectionalLight3D({color:0xFFFFFF, ambient:0.25,
diffuse:0.75, specular:0.9});
lightD.direction.x = 5000;
lightD.direction.z = 0;
lightD.direction.y = 5000;
_view.scene.addLight( lightD );
}
private function initCamera():void {
camera = new HoverCamera3D();
camera.zoom = 3;
camera.focus = 200;
camera.distance = 4000;
camera.yfactor = 1;
camera.panAngle = -10;
camera.tiltAngle = 20;
camera.hover(true);
_view.camera = camera;
}
private function onEnterFrame(ev : Event) : void {
sphere.rotationY += 5;
_view.render();
}
}
}
The call to Dot3BitmapMaterial(colorsource, colorsource) is only in
there to make sure that I'm not making a substantial mistake using
this function.
The sphere is rotating with its weird Dot3BitmapMaterial which never
(at least not after minutes) gets updated.
Where is the mistake?
Thanks for any hint and best regards,
Marko
pgpWmPqjnIbmj.pgp
Description: PGP signature
