THREE.Box3.setFromObject(*object*)
yanlış değerler döndürür. Size göstermenin en iyi yolu, nasıl çalıştığımı göstermektir:setFromObject (mesh) yanlış değerleri döndürür, bazen
Köşelerden 2 kafes oluşturuyorum. Birincisi triangle()
işlevi, diğeri trapezoidForm()
ile.
var material = new THREE.MeshPhongMaterial({ color: 0x666666, /*specular: 0x101010*//*, shininess: 200*/ });
var shape = new THREE.Shape(vertices);
var mesh = new THREE.Mesh(new THREE.ShapeGeometry(shape), material);
Ve sahnenin yerleştirmek için kullanabilirsiniz ve bir BoundingBox oluşturmak için:
var triangle = function (base, height) {
return [
new THREE.Vector2(0, -height/2),
new THREE.Vector2(-base/2, height/2),
new THREE.Vector2(base/2, height/2)
];
}
var trapezoidForm = function (base, upperBase, height) {
return [
new THREE.Vector2(-base/2, height/2),
new THREE.Vector2(-upperBase/2, -height/2),
new THREE.Vector2(upperBase/2, -height/2),
new THREE.Vector2(base/2, height/2),
];
}
benim örgü oluşturmak için döndürülen değeri kullanın Şimdi
mesh.position.set(posX, 0, posZ);
mesh.rotation.set(-Math.PI/2, 0, 0);
boundingBox.setFromObject(mesh);
, ben 2 şekillerimin merkezini bulmak istiyorum. Yeterince kolay: Sınırlayıcı kutuyu alıp hesapladım. Şunun gibi: Yanlış nereye gittiğini
İştevar centerX = (boundingBox.max.x + boundingBox.min.x) * 0.5;
var centerZ = (boundingBox.max.z + boundingBox.min.z) * 0.5;
geçerli: üçgen için, doğru noktayı hesaplar, ancak trapezoid için, bu işler karışıyor.
Aşağıda, konsolun bir yazdırma ekranı bulunmaktadır. İlk 3 köşe üçgeni, ardından sınırlayıcı kutucuktur. Sonraki 4, trapezoid için, yine sınırlayıcı kutu içindir. Köşeler için: ilk sayı X-Koordur, ikincisi Z-Koordur.
İstenilen sonuç: 2 boundingbox gibi bir şey dönmelidir:
max: X: 200
Z: 200
min: X: -200
Z: -100
Görüntü mevcut durumunu gösteren (üçgen ortasında eksi işareti vardır, yamuk değil):