重新替代了遍,还是不行 请教xml或dea模型的贴图交互代码,如有大师比较闲,顺便看看我
猫七七 (2011-04-02 15:22:05)
上张图片,实现人物换装效果,帮帮忙
package
{
import flash.display.*;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import org.papervision3d.cameras.FreeCamera3D;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.materials.MovieMaterial;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.events.InteractiveScene3DEvent;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.objects.parsers.Collada;
import org.papervision3d.materials.utils.MaterialsList;
public class test01 extends Sprite
{
private var viewport:Viewport3D;
private var renderer:BasicRenderEngine;
private var scene:Scene3D;
private var camera:FreeCamera3D;
private var plane1:Plane;
private var car:Collada;
private var isFront:Boolean = true;
private var mc1:MovieClip=new MovieClip();
private var mm:MovieMaterial;
private var mp1:BitmapFileMaterial;
private var mp2:BitmapFileMaterial;
private var loader:Loader=new Loader();
public function test01():void
{
viewport = new Viewport3D(400,400);
renderer = new BasicRenderEngine ;
scene = new Scene3D ;
camera=new FreeCamera3D();
camera.y = 500;
camera.moveBackward(800);
addChild(viewport);
viewport.interactive = true;
loader.load(new URLRequest("y.jpg"));
loader.addEventListener(MouseEvent.CLICK,onInter1);
loader.addEventListener(MouseEvent.MOUSE_OVER,onInter2);
loader.addEventListener(MouseEvent.MOUSE_OUT,onInter3);
mm = new MovieMaterial(mc1,true,true);
mm.smooth = true;
mm.interactive = true;
plane1 = new Plane(mm,240,238);
mc1.graphics.beginFill(0xDDDDDD);
mc1.graphics.drawRect(0, 0, 0, 0);
mc1.graphics.endFill();
mc1.addChild(loader);
loader.x = loader.y = 50;
loader.scaleX = loader.scaleY = 2;
mp1 = new BitmapFileMaterial("ca.jpg");
mp2 = new BitmapFileMaterial("car.jpg");
car = new Collada("car.xml",new MaterialsList({all:(mp1)}));
plane1.moveLeft(500);
car.moveRight(100);
car.yaw(30);
scene.addChild(plane1);
scene.addChild(car);
addEventListener(Event.ENTER_FRAME,process);
}
public function onInter1(evt:MouseEvent):void
{
if (isFront)
{
car.material = mp2;
isFront = false;
}
else
{
car.material = mp1;
isFront = true;
}
}
public function onInter2(evt:MouseEvent):void
{
viewport.getChildLayer(plane1).buttonMode = true;
}
public function onInter3(evt:MouseEvent):void
{
viewport.getChildLayer(plane1).buttonMode = false;
}
private function process(evt:Event):void
{
car.rotationY = -((mouseX / stage.width) * 360);
renderer.renderScene(scene,camera,viewport);
}
}
}