كيفية العثور على العادي ناقلات لافتا مباشرة من العالم الافتراضي إلى الشاشة في Java3D?

StackOverflow https://stackoverflow.com/questions/40028

  •  09-06-2019
  •  | 
  •  

سؤال

أعتقد أنه يمكن القيام به من خلال تطبيق مصفوفة التحويل من scenegraph إلى z-عادي (0, 0, 1), لكنه لا يعمل.قانون بلدي وغني عن مثل هذا:

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();

ولكن لا يزال لا يعمل بشكل صحيح.أعتقد يجب أن يكون هناك طريقة سهلة لإنشاء مثل هذه النواقل.هل تعرف ما هو الخطأ في بلدي رمز أو أفضل طريقة للقيام بذلك ؟

هل كانت مفيدة؟

المحلول 2

نعم, كنت حصلت على السؤال.آسف أن كنت مشوشة قليلا أمس.الآن لدي تصحيح التعليمات البرمجية التالية اقتراحك و خلط اثنين من قطعة من التعليمات البرمجية في مسألة معا:

Vector3f toScreenVector = new Vector3f(0, 0, 1);

Transform3D t3d = new Transform3D();
canvas.getImagePlateToVworld(t3d);
t3d.transform(toScreenVector);

tg.getTransform(t3d); //tg is Transform Group of all objects in a scene
t3d.transform(toScreenVector);

شكرا لك.

نصائح أخرى

إذا كنت تحصل على هذا الحق ، تريد ناقل العادية إلى شاشة الطائرة ، ولكن في العالم الإحداثيات ؟

في حال كنت ترغب في INVERT التحول من World -> Screen and do Screen -> World من (0,0,-1) أو (0,0,1) اعتمادا على أي محور الشاشة نقاط.

منذ ModelView المصفوفة هو مجرد دوران مصفوفة (تجاهل متجانسة تحويل جزء) ، يمكنك ببساطة سحب هذا الخروج من خلال اتخاذ تبديل الدوران جزئي أو بسيط في القراءة في الصف السفلي - كما ينقل على Z تنسيق العمود تحت تبديل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top