Ich habe mit Three.js gespielt.Wie erhält man die Eckpunktposition nach der Anwendung von translate, root und scale to geometry mit three.js?
Was mein Ziel ist es, eine Kurve in der Szene zu erstellen und einige Transformation darauf anwenden. Die Funktion ist die Linie zu erstellen ist:
var random_degree = Math.round(Math.rand() * 180);
var tmp = [
new THREE.Vector3(-5, 0, 0),
new THREE.Vector3(0, 0, 5),
new THREE.Vector3(5, 0, 0),
new THREE.Vector3(0, 0, -5),
];
var canvasW = window.innerWidth;
var canvasH = window.innerHeight;
// so the initial curve is a circle on x-z plain.
function get_line_geo() {
var angle = (random_degree + 1 * 0.25) % 360 * (Math.PI/180);
var tx = Math.cos(angle) * canvasW * 0.25;
angle = (random_degree + 1 * 0.3) % 360 * (Math.PI/180);
var ty = Math.sin(angle) * canvasH * 0.25;
var curve = new THREE.CatmullRomCurve3(tmp);
curve.closed = true;
var geometry = new THREE.Geometry();
geometry.vertices = curve.getPoints(300);
console.log(geometry.vertices[0].x + ' ' +geometry.vertices[0].y + ' ' +geometry.vertices[0].z);
var material = new THREE.LineBasicMaterial();
var curveObject = new THREE.Line(geometry, material);
curveObject.translateX((canvasW - margin * 2)/2 + tx);
curveObject.translateY((canvasH - margin * 2)/2 + ty);
curveObject.translateZ((canvasH - margin * 2)/2 + ty);
curveObject.rotation.x = ((random_degree + 1 * 0.25) % 360) * Math.PI/180;
curveObject.rotation.y = ((random_degree + 1 * 0.25) % 360) * Math.PI/180;
curveObject.rotation.z = ((random_degree + 1 * 0.25) % 360) * Math.PI/180;
curveObject.scale.x = 10;
curveObject.scale.y = 10;
curveObject.scale.z = 10;
console.log(curveObject.geometry.vertices[0].x + ' ' +curveObject.geometry.vertices[0].y + ' ' +curveObject.geometry.vertices[0].z);
return curveObject;
}
ich die Eckpunkte Positionen geprüft console.log()
unter Verwendung sie nicht in der Geometrie Kontext ändern. Gibt es irgendeine Methode, mit der ich die neuen Positionen für diese Knoten berechnen kann?
Groß Es hat mir sehr geholfen. Die einzige Sache ist in der neuesten Version von three.js, die applyMatrix für verctor3 wurde auf zwei Methoden aktualisiert: 1. applyMatrix3 und 2 applyMatrix4. Und ich denke es ist r75. Bitte beachten Sie http://threejs.org/docs/index.html#Reference/Math/Vector3. Jedenfalls werde ich es als eine Antwort markieren. Und von dem, was ich getestet habe, ist die applyMatrix4, was ich will. –
Hoppla. Tippfehler. Korrigiert. Vielen Dank. – WestLangley