Es scheint, als ob dies einfach sein sollte, aber ich habe fast eine Woche damit verbracht, jede mögliche Kombination aus dem Ziehen mehrerer Objekte als Gruppe in Three.js auszuprobieren. Es begann einfach, ich benutzte dieses Beispiel https://jsfiddle.net/mz7Lv9dt/1/, um den Ball zum Laufen zu bringen. Ich dachte, ich könnte einfach etwas TextGeometry hinzufügen, das natürlich einige wichtige API-Änderungen in den letzten paar Veröffentlichungen hatte, die die meisten Beispiele veralten ließen.Three.js move as group
Nachdem ich es schließlich als eine einzige Zeile funktionierte, wollte ich Wordwrap hinzufügen und es als Gruppe verschieben, aber ich kann es nicht scheinen.
Hier können Sie es sehen die Arbeit mit dem Ball ganz gut, aber Sie können den Text https://jsfiddle.net/ajhalls/h05v48wd/
Durch Austausch rund drei Zeilen Code (Ortslinie 93-99) nicht ziehen, kann ich es bekommen, wo Sie können die einzelnen Linien ziehen um, die Sie hier sehen können: https://jsfiddle.net/ajhalls/t0e2se3x/
function addText(text, fontSize, boundingWidth) {
var wrapArray;
wrapArray = text.wordwrap(10,2);
var loader = new THREE.FontLoader();
loader.load('https://cdn.coursesaver.com/three.js-74/examples/fonts/helvetiker_bold.typeface.js',
function (font) {
group = new THREE.Group();
group.name = "infoTag";
for (var i = 0; i < wrapArray.length; i++) {
var objectID=i;
var line = wrapArray[objectID];
var textGeo = new THREE.TextGeometry(line, {font: font,size: fontSize,height: 10,curveSegments: 12,bevelThickness: 0.02,bevelSize: 0.05,bevelEnabled: true});
textGeo.computeBoundingBox();
var centerOffset = -0.5 * (textGeo.boundingBox.max.x - textGeo.boundingBox.min.x);
var textMaterial = new THREE.MeshPhongMaterial({ color: 0xff0000, specular: 0xffffff });
var mesh = new THREE.Mesh(textGeo, textMaterial);
mesh.position.x = centerOffset +200;
mesh.position.y = i*fontSize*-1+11;
mesh.position.z = 280;
mesh.castShadow = true;
mesh.receiveShadow = true;
mesh.geometry.center();
mesh.lookAt(camera.position);
mesh.name = i;
group.add(mesh); //this should work - comment out and swap for other two lines to see
scene.add(mesh); // this should work- comment out and swap for other two lines to see
//objects.push(mesh);//works on individual lines if you uncomment this
//scene.add(mesh); //works on individual lines if you uncomment this
}
objects.push(group); // this should work- comment out and swap for other two lines to see
});
}
das „sollte“ arbeiten nach allem, was ich in der letzten Woche recherchiert hatte. Ich hatte einen Moment, wo es "funktionierte", aber wegen der Größe des group
Objekts waren die Drehpunkte falsch, die setLength
Funktion funktionierte nicht, und es kippte das Objekt weg von der Kamera. Alles in allem war es ein Durcheinander.
Ich habe versucht, 2d-Objekte wie Leinwände und Sprites, aber aus den hier aufgeführten Gründen Three.js TextGeometry Wordwrap - drag as group konnte es nicht funktionieren.
Bitte, jemand mir helfen!
Hallo, ich Ich denke, wenn Sie ein Objekt für den Join verwenden, könnten alle Meshes funktionieren, einen transparenten Würfel erstellen oder Sie könnten Ihre Sphäre als Hauptobjekt verwenden. Fügen Sie alle Objekte mit '.add' in die Hauptobjekte ein Position, in der Folge müssen Sie nur ein Hauptobjekt bewegen –
Ich verstehe nicht die Frage .. Sie wollen in der Lage sein, den ganzen Text herum zu ziehen? alle drei Zeilen gleichzeitig? Denn das scheint für mich im zweiten Beispiel, das du verlinkt hast, zu funktionieren (der, wo du sagst, dass du nur den Ball ziehen kannst) – micnil