2017-04-26 3 views

Antwort

0

Schauen Sie einfach auf den Quellcode in der three.js viewer implementation in Zeile # 8228.

// File:src/core/Face3.js 

    /** 
    * @author mrdoob/http://mrdoob.com/ 
    * @author alteredq/http://alteredqualia.com/ 
    */ 

    THREE.Face3 = function (a, b, c, normal, color, materialIndex) { 

    this.a = a; 
    this.b = b; 
    this.c = c; 

    this.normal = normal instanceof THREE.Vector3 ? normal : new THREE.Vector3(); 
    this.vertexNormals = normal instanceof Array ? normal : []; 

    this.color = color instanceof THREE.Color ? color : new THREE.Color(); 
    this.vertexColors = color instanceof Array ? color : []; 

    this.vertexTangents = []; 

    this.materialIndex = materialIndex !== undefined ? materialIndex : 0; 

    }; 

    THREE.Face3.prototype = { 

    constructor: THREE.Face3, 

    clone: function() { 

     var face = new THREE.Face3(this.a, this.b, this.c); 

     face.normal.copy(this.normal); 
     face.color.copy(this.color); 

     face.materialIndex = this.materialIndex; 

     for (var i = 0, il = this.vertexNormals.length; i < il; i ++) { 

     face.vertexNormals[ i ] = this.vertexNormals[ i ].clone(); 

     } 

     for (var i = 0, il = this.vertexColors.length; i < il; i ++) { 

     face.vertexColors[ i ] = this.vertexColors[ i ].clone(); 

     } 

     for (var i = 0, il = this.vertexTangents.length; i < il; i ++) { 

     face.vertexTangents[ i ] = this.vertexTangents[ i ].clone(); 

     } 

     return face; 

    } 

    }; 

Werfen Sie auch einen Blick auf die three.js Face3 Dokumentation:

Dreiecksfläche in der Geometrie verwendet. Diese werden automatisch für alle Standardgeometrietypen erstellt. Wenn Sie jedoch eine benutzerdefinierte Geometrie erstellen, müssen Sie sie manuell erstellen.

+0

Was ist der Zweck, es von 'hitTestViewport' zurückzugeben? Wofür wird es in diesem Fall verwendet? – shinzou

+0

Das ist nur die Face3-Einheit, die durchschnitten wird. Was willst du genau erreichen? –

0

Ich kann das nicht aus der Hand beantworten. Was ich jedoch mit Gewissheit sagen kann, ist, wie Raytracing im Viewer implementiert wird, d. H. Wie ein zu schussender Strahl definiert wird und wie die Three.js-Objekte, die von ihm im Forge-Modell geschnitten werden, bestimmt werden. Dies wird durch die ForgeFader Projekt auf GitHub demonstriert:

https://github.com/jeremytammik/forgefader

+0

Es wäre schön zu wissen, was dieses Gesicht ist, vielleicht könnte ich es für etwas verwenden. – shinzou

Verwandte Themen