Actionscript 3 Papervision3D;在摄影机视图中旋转子对象

Actionscript 3 Papervision3D;在摄影机视图中旋转子对象,actionscript-3,flex3,papervision3d,Actionscript 3,Flex3,Papervision3d,这是我第一次使用Papervision3D,我创建了一个在y轴上倾斜的图像幻灯片。左边是最小的照片,右边的照片会变大。所以它们从左向右缩放,从最小到最大 我有一个工具提示,当你将鼠标悬停在照片上时会弹出,但是工具提示也会随着相机视图的倾斜而倾斜。我希望工具提示的角度独立于整个摄影机视图 知道如何独立于父对象的摄影机角度旋转对象吗 谢谢 my_obj=新的DisplayObject3D; my_plane=my_obj.addChildnew Planebla bla bla; 我的照相机 “注视

这是我第一次使用Papervision3D,我创建了一个在y轴上倾斜的图像幻灯片。左边是最小的照片,右边的照片会变大。所以它们从左向右缩放,从最小到最大

我有一个工具提示,当你将鼠标悬停在照片上时会弹出,但是工具提示也会随着相机视图的倾斜而倾斜。我希望工具提示的角度独立于整个摄影机视图

知道如何独立于父对象的摄影机角度旋转对象吗


谢谢

my_obj=新的DisplayObject3D; my_plane=my_obj.addChildnew Planebla bla bla; 我的照相机


“注视”位就是您所需要的。

为什么不在2d中绘制工具提示?您可以获得图像在屏幕上的位置,然后只需绘制一个常规精灵,如下所示:

package 
{
import flash.display.Sprite;
import flash.text.TextField;

import org.papervision3d.events.InteractiveScene3DEvent;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.typography.Text3D;
import org.papervision3d.view.BasicView;

public class PVTest extends Sprite
{
    private var world:BasicView;
    private var text:Text3D;
    private var text2d:TextField;

    public function PVTest()
    {
        world = new BasicView(stage.width, stage.height, true, true);

        var colorMat:ColorMaterial = new ColorMaterial();
        colorMat.interactive = true;

        var planeContainer:DisplayObject3D = new DisplayObject3D();
        var plane:Plane;
        for(var i:int = 0; i < 11; i++)
        {
            plane= new Plane(
                colorMat,
                100, 100,
                10);
            plane.x = (i * 105) - 500;
            plane.addEventListener(InteractiveScene3DEvent.OBJECT_OVER, handleMouseOver);
            plane.addEventListener(InteractiveScene3DEvent.OBJECT_OUT, handleMouseOut);
            planeContainer.addChild(plane);
        }

        planeContainer.rotationY = 10;
        world.scene.addChild(planeContainer);

        world.camera.z = -500;

        addChild(world);
        world.startRendering();
    }

    private function handleMouseOver(event:InteractiveScene3DEvent):void
    {
        var plane:Plane = Plane(event.displayObject3D);
        plane.calculateScreenCoords(world.camera);

        const OFFSET_X:int = -20;
        const OFFSET_Y:int = 30;
        text2d = new TextField();
        text2d.text = "toolTip";
        text2d.x = plane.screen.x + (stage.width/2) + OFFSET_X;
        text2d.y = plane.screen.y + (stage.height/2) + OFFSET_Y;
        addChild(text2d);
    }

    private function handleMouseOut(event:InteractiveScene3DEvent):void
    {
        removeChild(text2d);
    }
}

}

即使在本例中,您也必须根据对象比例偏移工具提示的y位置,但这可能比计算旋转更容易,并且是获得一致外观结果的最佳方法。

看,出于某些恼人的原因,使对象看起来远离摄影机使用带有双面材质的文本对象来了解我的意思。此外,文本将绘制在一个与相机成一定角度的平面上,而不是在一个与相机平行的平面上,而这可能是他想要的。