Can't you just reverse the colors in the Normal Map? Photoshop ("inverse")I'm not sure why it's backwards, sorry :/ On Tue, Jan 20, 2009 at 3:28 PM, zhil <[email protected]> wrote: > > Hi there! > I have created simple application, which load normal map, simple > texture and shirt model, but for some reasons it looks pretty strange > - like if normal map was inverted for some reason (showing dark > instead of light and vice verse) > > Online demo here > http://files.rightinpoint.com/tailor_65s6d562/tailor2.html > > Source model > http://files.rightinpoint.com/tailor_65s6d562/shirt4.jpg > > Source code > > package { > import flash.display.*; > import flash.events.*; > import flash.net.*; > import away3d.core.*; > import away3d.events.*; > import fl.controls.List; > import fl.data.DataProvider; > > import away3d.core.base.*; > import away3d.containers.*; > import away3d.primitives.*; > import away3d.materials.*; > import away3d.loaders.*; > import away3d.cameras.*; > import away3d.core.utils.Cast; > import away3d.events.*; > import away3d.lights.*; > > public class Tailor2 extends Sprite { > var view:View3D; > var scene:Scene3D; > var camera:HoverCamera3D; > var objLoader:Object3DLoader; > var obj:ObjectContainer3D; > var objLoader2:Object3DLoader; > var obj2:ObjectContainer3D; > var material:Dot3BitmapMaterial; > var _loader:Loader; > var _loader2:Loader; > var _bitmapData:BitmapData; > var light:DirectionalLight3D; > var move:Boolean = false; > var lastPanAngle:Number; > var lastTiltAngle:Number; > var lastMouseX:Number; > var lastMouseY:Number; > > var selectGroup:Sprite; > var selectMiddle:List; > > function Tailor2() { > stage.frameRate=60; > away3dcreate(); > // initSelect(); > } > function initSelect() { > selectMiddle = new List(); > selectGroup.addChild(selectMiddle); > } > function away3dcreate():void { > scene = new Scene3D(); > camera = new HoverCamera3D({zoom:3, focus:200, > distance:10000}); > camera.targetpanangle = camera.panangle = -10; > camera.targettiltangle = camera.tiltangle = 20; > camera.yfactor = 1; > view=new > View3D({scene:scene,camera:camera,x:450,y:450}); > addChild(view); > _loader = new Loader(); > > _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, > onLoadTextureComplete); > _loader.load(new URLRequest("assets/t.jpg")); > } > function onLoadTextureComplete(e:Event):void { > trace("onLoadTextureComplete"); > _bitmapData = Bitmap(_loader.content).bitmapData; > _loader2 = new Loader(); > > _loader2.contentLoaderInfo.addEventListener(Event.COMPLETE, > onLoadNormalComplete); > // _loader2.load(new > URLRequest("assets/wp/normal.jpg")); > _loader2.load(new > URLRequest("assets/normal_from_Zbrush6.jpg")); > } > function onLoadNormalComplete(e:Event):void { > trace("onLoadNormalComplete"); > // light = new DirectionalLight3D({color:0xFFFFFF, > ambient:0.25, > diffuse:0.85, specular:0.95}); > light = new DirectionalLight3D({color:0xFFFFFF, > ambient:0.15, > diffuse:0.95, specular:0.95}); > light.x = 10; > light.z = 1; > light.y = 1; > scene.addChild( light ); > material = new Dot3BitmapMaterial(_bitmapData,Bitmap > (_loader2.content).bitmapData,{}); > //material = new > Dot3BitmapMaterial(Cast.bitmap(TorsoImage), > Cast.bitmap(TorsoNormal)); > // objLoader = > Max3DS.load("assets/wp/men_normal_fit.3DS", > {material:material, ownCanvas:true, name:"torso", centerMeshes:true}); > objLoader = Max3DS.load("assets/2009_01_20v2.3DS", > {material:material, ownCanvas:true, name:"torso", centerMeshes:true}); > objLoader.addOnSuccess(objOnSuccess); > //objLoader2 = > Max3DS.load("assets/collar.3DS",{material:material, > ownCanvas:true, name:"torso", centerMeshes:true}); > //objLoader2.addOnSuccess(obj2OnSuccess); > } > function objOnSuccess(e:Event):void { > trace("objOnSuccess"); > obj = (objLoader.handle as ObjectContainer3D); > autoAdjust(obj); > view.scene.addChild(obj); > camera.lookAt(obj.position); > initListeners(); > } > function autoAdjust(obj:ObjectContainer3D) { > trace(obj.minX); > trace(obj.maxX); > trace(obj.minY); > trace(obj.maxY); > trace(obj.minZ); > trace(obj.maxZ); > > obj.movePivot((obj.minX+obj.maxX)/2,(obj.minY+obj.maxY)/2,(obj.minZ > +obj.maxZ)/2); > > obj.scale(10000/Math.max(Math.abs(obj.minX-obj.maxX),Math.abs > (obj.minY-obj.maxY),Math.abs(obj.minZ-obj.maxZ))); > obj.rotationX = 90; > } > function initListeners():void { > addEventListener( Event.ENTER_FRAME, onEnterFrame ); > stage.addEventListener(MouseEvent.MOUSE_DOWN, > onMouseDown); > stage.addEventListener(MouseEvent.MOUSE_UP, > onMouseUp); > } > > /** > * Navigation and render loop > */ > function onEnterFrame(event:Event):void { > view.camera.moveTo(obj.x,obj.y,obj.z); > view.camera.rotationY=mouseX/2; > view.camera.rotationX=mouseY/2; > view.camera.moveBackward(5); > //obj.rotationY+=1; > view.render(); > > if (move) { > camera.targetpanangle = 0.3*(stage.mouseX - > lastMouseX) + > lastPanAngle; > camera.targettiltangle = 0.3*(stage.mouseY - > lastMouseY) + > lastTiltAngle; > } > camera.hover(); > view.render(); > } > > /** > * Mouse down listener for navigation > */ > function onMouseDown(event:MouseEvent):void { > lastPanAngle = camera.targetpanangle; > lastTiltAngle = camera.targettiltangle; > lastMouseX = stage.mouseX; > lastMouseY = stage.mouseY; > move = true; > stage.addEventListener(Event.MOUSE_LEAVE, > onStageMouseLeave); > } > > /** > * Mouse up listener for navigation > */ > function onMouseUp(event:MouseEvent):void { > move = false; > stage.removeEventListener(Event.MOUSE_LEAVE, > onStageMouseLeave); > } > > /** > * Mouse stage leave listener for navigation > */ > function onStageMouseLeave(event:Event):void { > move = false; > stage.removeEventListener(Event.MOUSE_LEAVE, > onStageMouseLeave); > } > } > } > > Location of the models the same as in the source. > > Any ideas what could be the reason? > - problems in 3ds model (it was created in Maya, exported as obj, > imported into 3dmax, exported as 3ds)? > - problems in normal map? > - problems in lights settings in action script? I have played with > different settings, but was failed to locate reason. > - bug in away3d? > > Right now I dont have any ideas how I can move forward with this bug, > so any help are welcome. -- ___________________ Actionscript 3.0 Flash 3D Graphics Engine HTTP://AWAY3D.COM
