أنا جديد جدًا في هذا المجال ، لذا أعذر إذا كان سؤالًا غبيًا.
مشكلتي:
أرغب في بناء منشور (مجموعات مضلعة من 24 طائرة). لدي 24 طائرة ، كل منهم 15 درجة من بعضها البعض ومجمعة. نظرًا لأنه من المعقد حساب مقدار المسافة x و z ، سيكون من الأسهل إذا قمت بتعيين النقطة المحورية في أسفل اليمين على سبيل المثال؟ حق؟ ولكن كيف؟ أم أن هناك إمكانية أخرى لإنشاء دائرة تتكون من طائرات؟
اسف على سوء لغتي الانجليزية :-/
لديك خياران.
إزاحة كل القمم في هندستك:
geometry.applyMatrix( new THREE.Matrix4().setTranslation( 0, 10, 0 ) );
قم بإنشاء كائن يعمل كمحور:
mesh.position.y = 10;
var pivot = new THREE.Object3D();
pivot.add( mesh );
scene.add( pivot );
هل هناك أي إيجابيات أو سلبيات في هاتين الطريقتين؟
geometry.applyMatrix (جديد THREE.Matrix4 (). setTranslation (0، 10، 0)) ؛
هو الآن
geometry.applyMatrix (new THREE.Matrix4 (). makeTranslation (0، 10، 0)) ؛
https://github.com/mrdoob/three.js/commit/7f05ba167c522d1b9bac01677c2249b0f1b8c834
تطبيق applicationMatrix على شيء الترجمة ، لا يعمل في حالتي. لا أعرف لماذا.
يعمل الكائن المحوري. و IMHO أسهل.
ملحوظة:
استخدم هذا
mesh.position.x = ###;
mesh.position.y = ###;
mesh.position.z = ###;
بدلا من:
mesh.position.set(###,###,###);
شكرًا placegraphichere ، لقد ساعد ذلك.
يجب أن يعمل شيء من هذا القبيل أيضًا مع three.js v78 ، إذا كنت تريد على سبيل المثال. استدر حول حافة الكائنات بدلاً من ذلك إذا كان مركزها:
.js
mesh.geometry.translate( -myObjectWidth/2, 0, 0 );
لكن يجب أن تدرك أن استخدام geometry.translate()
سيؤدي إلى تعديل موضع جميع الرؤوس. إنه حل جيد طالما أنك لا تخطط لتغيير المحور مرة أخرى لاحقًا.
أريد ترجمة أصل الشبكة (حاوية صندوقية ثلاثية الأبعاد) من المركز إلى الزاوية السفلية اليسرى. لذلك عندما أقوم بإضافة أي صندوق شبكي صغير آخر داخل شبكة الحاوية ، يجب وضعه داخل الركن السفلي الأيسر بدلاً من وضعه في المنتصف.
mesh.geometry.translate (-myObjectWidth / 2 ، 0 ، 0) ؛
عندما أستخدم هذا ، يتغير موقع الشبكة الخاص بي أيضًا
imguccho من فضلك ، استخدم المنتدى للمساعدة.
كيف يمكنني ترجمة النقطة لـ ArrowHelper
التعليق الأكثر فائدة
لديك خياران.
إزاحة كل القمم في هندستك:
قم بإنشاء كائن يعمل كمحور: