/ / Trasformare le normali dei vertici in three.js - javascript, three.js

Trasformare le normali dei vertici in three.js - javascript, three.js

Sto avendo difficoltà con le normali dei vertici inThree.js. (Per riferimento sto usando la revisione 58.) Per vari motivi mi piacerebbe prima calcolare le normali dei vertici del viso quando imposto la mia geometria, quindi essere libero di trasformarlo, unirlo e quant'altro.

Mentre mi rendo conto che le normali dipendono dali vertici che vengono trasformati quando si applica una matrice, pensavo che geometry.applyMatrix fosse in grado di trasformarli. Tuttavia, mentre il seguente funziona bene:

geometry.applyMatrix(new THREE.Matrix4().makeScale(1, -1, 1));
geometry.computeFaceNormals();
geometry.computeVertexNormals();

... il seguente ordine di operazioni restituisce le normali dei vertici invertiti:

geometry.computeFaceNormals();
geometry.computeVertexNormals();
geometry.applyMatrix(new THREE.Matrix4().makeScale(1, -1, 1));

Quindi mi sto semplicemente chiedendo, funziona così come previsto? Devo prima eseguire tutte le trasformazioni sulla geometria prima di calcolare le normali dei vertici?

risposte:

3 per risposta № 1

three.js non supporta i riflessi in matrice di oggetti. Impostando un fattore di scala negativo, si riflette la geometria dell'oggetto.

Sei libero di applicare una tale matrice alla tua geometria direttamente, tuttavia, che, naturalmente, è ciò che stai facendo.

Tuttavia, questo comporterà un numero diconseguenze indesiderabili, una delle quali è che le facce geometriche non avranno più ordine di avvolgimento in senso antiorario, ma in senso orario. Risulterà anche in faccia normale invertita come calcolato da geometry.computeFaceNormals().

Vorrei sconsigliarlo, a meno che tu non abbia familiarità con il funzionamento interno della biblioteca.

three.js r.58