2017-05-19 4 views
0

Ich möchte TetrahedronGeometry mit polyedronGeometry() erstellen, aber es funktioniert nicht, da ist nichts in der Szene.in three.js, PolyederGeometry() konnte nicht arbeiten

var vertices = [ 
    [1, 0, 1], 
    [1, 0, -1], 
    [-1, 0, -1], 
    [-1, 0, 1], 
    [0, 1, 0] 
]; 
var faces = [ 
    [0, 1, 2, 3], 
    [0, 1, 4], 
    [1, 2, 4], 
    [2, 3, 4], 
    [3, 0, 4] 
]; 

var geometry = new THREE.PolyhedronGeometry(vertices, faces); 
var material = new THREE.MeshBasicMaterial({color: 0x00ff00}); 
var mesh = new THREE.Mesh(geometry, material); 
scene.add(mesh); 
+0

Funktioniert in welchem ​​Sinne nicht? Beitrag bearbeiten, um Details hinzuzufügen. –

+1

Alle Fehlermeldungen in den Konsolenprotokollen? In Anbetracht der [Dokumentation] (https://threejs.org/docs/index.html#api/geometries/PolyhedronGeometry) scheint es, dass Ihre Arrays aus Vertices und Faces eindimensional sein sollten. – prisoner849

Antwort

1

Erste Blick auf the documentation for PolyhedronGeometry. Sie folgen nicht der Spezifikation beim Senden von Faces/Vertices.

Vertices als ein Argument soll ein Array von Schwimmern sein, nicht ein Array von Arrays. so [[#.#,#.#,#.#],[....]] ist falsch, da jeder Eintrag von Vertices ein Array ist, kein Float. aber [#,#,#,#,#,#,#, .....] wird funktionieren. Gleiches gilt für faces. Es wird [0,1,2,1,2,3,2,3,4] als 3 separate Flächen angezeigt. Sie müssen sie nicht in ihre eigenen Arrays aufteilen.

Zweite, versuchen Sie, ein Quad in die faces, die Dreiecke erwartet zu gleiten. Also müssen Sie [0, 1, 2, 3] in 0,1,2,1,2,3 brechen.

Third, Sie definieren nicht die Größe in PolyhedronGeometry, ich denke, es standardmäßig auf 1, das sollte in Ordnung sein, aber falls Sie sich eine Szene von massiven/winzigen Maßstab machen Sie könnte dies selbst einstellen müssen um sicherzustellen, dass es sichtbar ist und dass die Kamera nicht darin ist. Ich kann deine Kameradefinition nicht sehen, also könnte das ein Faktor sein.

Last, für das Debuggen, würde ich

ändern

new THREE.MeshBasicMaterial({color: 0x00ff00});

für:

new THREE.MeshBasicMaterial({color: 0x00ff00,side:THREE.DoubleSide});

so dass nur im Falle Ihrer Wicklung um falsch ist, können Sie zumindest sehen ob Sie die richtige Geometrie und die richtigen Flächen erstellen. Sobald Sie etwas auf dem Bildschirm haben, können Sie die Doppelseite ausschalten und die Wicklung debuggen.

Verwandte Themen