我認爲可以通過將scenegraph的變換矩陣應用到z-normal(0,0,1)來完成,但它不起作用。我的代碼是這樣的:如何查找直接從虛擬世界指向Java3D中的法線矢量?
Vector3f toScreenVector = new Vector3f(0, 0, 1);
Transform3D t3d = new Transform3D();
tg.getTransform(t3d); //tg is Transform Group of all objects in a scene
t3d.transform(toScreenVector);
然後我試圖這樣的事情太:
Point3d eyePos = new Point3d();
Point3d mousePos = new Point3d();
canvas.getCenterEyeInImagePlate(eyePos);
canvas.getPixelLocationInImagePlate(new Point2d(Main.WIDTH/2, Main.HEIGHT/2), mousePos); //Main is the class for main window.
Transform3D motion = new Transform3D();
canvas.getImagePlateToVworld(motion);
motion.transform(eyePos);
motion.transform(mousePos);
Vector3d toScreenVector = new Vector3f(eyePos);
toScreenVector.sub(mousePos);
toScreenVector.normalize();
但是這仍然無法正常工作。我認爲必須有一個簡單的方法來創建這樣的矢量。你知道我的代碼有什麼問題或更好的方法嗎?