Three.js: Ubah titik pivot objek saya?

Dibuat pada 20 Feb 2012  ·  10Komentar  ·  Sumber: mrdoob/three.js

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: - /

Question

Komentar yang paling membantu

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

Semua 10 komentar

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

Apakah halaman ini membantu?
0 / 5 - 0 peringkat