- static CreateExplicit(vertices, faces) {\r
- let result = new Cloth();\r
-\r
- for (let i in vertices) {\r
- result.geometry.vertices.push(vertices[i]);\r
- result.vertexWeights.push(0);\r
- }\r
- for (let i in faces) {\r
- let face = faces[i];\r
-\r
- result.geometry.faces.push(new THREE.Face3(\r
- face.a, face.b, face.c\r
- ));\r
- result.geometry.faces.push(new THREE.Face3(\r
- face.c, face.b, face.d\r
- ));\r
- \r
- let xLength =\r
- result.geometry.vertices[face.b]\r
- .sub(result.geometry.vertices[face.a])\r
- .length();\r
- let yLength =\r
- result.geometry.vertices[face.c]\r
- .sub(result.geometry.vertices[face.a])\r
- .length();\r
- let weight = xLength * yLength / 2;\r
-\r
- xLength =\r
- result.geometry.vertices[face.b]\r
- .sub(result.geometry.vertices[face.d])\r
- .length();\r
- yLength =\r
- result.geometry.vertices[face.c]\r
- .sub(result.geometry.vertices[face.d])\r
- .length();\r
-\r
- weight += xLength * yLength / 2;\r
-\r
- result.vertexWeights[face.a] += weight / 4;\r
- result.vertexWeights[face.b] += weight / 4;\r
- result.vertexWeights[face.c] += weight / 4;\r
- result.vertexWeights[face.d] += weight / 4;\r
- }\r
-\r
- result.geometry.computeBoundingSphere();\r
-\r
- return result;\r