Saya sangat baru di bidang ini, jadi maafkan jika itu pertanyaan bodoh.
Masalahku:
Saya ingin membuat prisma (poligon terdiri dari 24 bidang). Jadi saya memiliki 24 pesawat, semuanya memiliki derajat 15 ° satu sama lain dan dikelompokkan. Karena terlalu ribet menghitung jarak x dan z, alangkah lebih mudahnya jika Anda mengatur pivot point di kanan bawah misalnya? Baik? tapi bagaimana caranya? atau adakah kemungkinan lain untuk membuat lingkaran yang terdiri dari bidang-bidang?
maaf atas bahasa Inggris saya yang buruk: - /
Anda punya dua pilihan.
Offset semua simpul dalam geometri Anda:
geometry.applyMatrix( new THREE.Matrix4().setTranslation( 0, 10, 0 ) );
Buat objek yang akan bertindak sebagai poros:
mesh.position.y = 10;
var pivot = new THREE.Object3D();
pivot.add( mesh );
scene.add( pivot );
apakah ada pro atau kontra dari kedua metode tersebut?
geometry.applyMatrix (new THREE.Matrix4 (). setTranslation (0, 10, 0));
sekarang
geometry.applyMatrix (new THREE.Matrix4 (). makeTranslation (0, 10, 0));
https://github.com/mrdoob/three.js/commit/7f05ba167c522d1b9bac01677c2249b0f1b8c834
hal applyMatrix makeTranslation, tidak berfungsi dalam kasus saya. tidak tahu kenapa.
objek pivot berfungsi. dan IMHO lebih mudah.
catatan:
Gunakan ini
mesh.position.x = ###;
mesh.position.y = ###;
mesh.position.z = ###;
dari pada:
mesh.position.set(###,###,###);
Terima kasih @placegraphichere , itu membantu.
Sesuatu seperti ini harus bekerja juga dengan three.js v78, jika Anda ingin misalnya. putar di sekitar tepi objek Anda sebagai gantinya jika pusatnya:
.js
mesh.geometry.translate( -myObjectWidth/2, 0, 0 );
Tetapi ketahuilah bahwa menggunakan geometry.translate()
akan mengubah posisi semua simpul. Ini solusi yang bagus selama Anda tidak berencana mengubah pivot lagi nanti.
Saya ingin menerjemahkan asal mesh (wadah kotak 3d) saya dari tengah ke sudut kiri bawah. Jadi ketika saya akan menambahkan kotak jaring kecil lainnya di dalam jaring kontainer, itu harus ditempatkan di dalam sudut kiri bawah daripada ditempatkan di tengah.
mesh.geometry.translate (-myObjectWidth / 2, 0, 0);
Saat saya menggunakan ini, posisi mesh saya juga berubah
@imguccho tolong, gunakan forum untuk bantuan.
Bagaimana saya bisa menerjemahkan poin untuk ArrowHelper
Komentar yang paling membantu
Anda punya dua pilihan.
Offset semua simpul dalam geometri Anda:
Buat objek yang akan bertindak sebagai poros: