0

我想要一个有一点深度的电影剪辑。我不能使用rotationX、rotationY 或rotationZ,因为我必须使用Flash CS3。

第一个图像是我现在拥有的,一个平面动画剪辑。第二个是我应该拥有的。

在此处输入图像描述 在此处输入图像描述

我已经尝试过使用矩阵,但这不起作用。我提出了一个问题,有人建议我应该使用 3D 引擎来获得我想要的结果。

因为它是一个必须是 3D 的 MovieClip,所以我现在使用了一个 MovieClipSprite。

var movieClipSprite:MovieClipSprite = new MovieClipSprite(myMC);
var view:View3D = new View3D({x:200,y:200});
        
var cam:Camera3D = new Camera3D();
cam.zoom = 1;
cam.y = 100;            
view.camera = cam;
cam.lookAt(new Number3D(0, 0, 0));
    
this.addChild(view);
view.scene.addSprite(movieClipSprite);
view.render();

不管我如何更换相机,我总是得到相同的结果。平面短片。

然后我阅读了 Away3D 文档

MovieClipSprite:球形广告牌(始终面向相机)精灵对象,它使用影片剪辑作为其纹理。在场景中绘制与 z 排序的三角形内联的单个显示对象。

我认为这就是为什么它总是给出相同的结果。

我也尝试过使用 MovieMaterial,但我从未成功过。

你能帮我把我的电影剪辑放在透视图中吗?

非常感谢!

文森特

4

1 回答 1

2

enter_frame 函数中有“view.render”吗?

它对我有用 flashdevelop & Away3d 4.0 :

    public var aSprite:Plane = new Plane(new ColorMaterial(0xFF0000));
    public var cam:Camera3D = new Camera3D();
    public var view:View3D = new View3D(null,cam);

    public function test() 
    {
        this.addChild(view);

        var vec:Vector3D = new Vector3D();
        cam.y = -300;
        cam.lookAt(vec);

        view.scene.addChild(aSprite);
        this.addEventListener(Event.ENTER_FRAME, onFrame);
    }

    public function onFrame(e:Event):void
    {
        view.render();
    }
于 2011-06-08T12:07:17.507 回答