Smooth shading on perspective spheres
This commit is contained in:
parent
260bc4f97b
commit
729aaa09c2
|
@ -0,0 +1,30 @@
|
||||||
|
var toGeometry = function (bg) {
|
||||||
|
// The following snipped is from Mattatz - Masatatsu Nakamura http://mattatz.org
|
||||||
|
var attrib = bg.getAttribute('position');
|
||||||
|
if(attrib === undefined) {
|
||||||
|
throw new Error('a given BufferGeometry object must have a position attribute.');
|
||||||
|
}
|
||||||
|
|
||||||
|
var positions = attrib.array;
|
||||||
|
|
||||||
|
var vertices = [];
|
||||||
|
|
||||||
|
for(var i = 0, n = positions.length; i < n; i += 3) {
|
||||||
|
var x = positions[i];
|
||||||
|
var y = positions[i + 1];
|
||||||
|
var z = positions[i + 2];
|
||||||
|
vertices.push(new THREE.Vector3(x, y, z));
|
||||||
|
}
|
||||||
|
|
||||||
|
var faces = [];
|
||||||
|
|
||||||
|
for(var i = 0, n = vertices.length; i < n; i += 3) {
|
||||||
|
faces.push(new THREE.Face3(i, i + 1, i + 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
var geometry = new THREE.Geometry();
|
||||||
|
geometry.vertices = vertices;
|
||||||
|
geometry.faces = faces;
|
||||||
|
geometry.computeFaceNormals();
|
||||||
|
return geometry;
|
||||||
|
}
|
|
@ -20,6 +20,7 @@
|
||||||
<script src="/js/FixedCamera.js"></script>
|
<script src="/js/FixedCamera.js"></script>
|
||||||
<script src="/js/CameraContainer.js"></script>
|
<script src="/js/CameraContainer.js"></script>
|
||||||
<script src="/js/Tools.js"></script>
|
<script src="/js/Tools.js"></script>
|
||||||
|
<script src="/js/BufferGeometryToGeometry.js"></script>
|
||||||
|
|
||||||
<script src="js/main.js"></script>
|
<script src="js/main.js"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -135,11 +135,14 @@ function loadScene() {
|
||||||
if (child instanceof THREE.Mesh ) {
|
if (child instanceof THREE.Mesh ) {
|
||||||
child.material.color.setHex(colors[i]);
|
child.material.color.setHex(colors[i]);
|
||||||
child.up = new THREE.Vector3(0,0,1);
|
child.up = new THREE.Vector3(0,0,1);
|
||||||
child.geometry.computeVertexNormals();
|
|
||||||
child.translateX(positions[i].x);
|
child.translateX(positions[i].x);
|
||||||
child.translateY(positions[i].y);
|
child.translateY(positions[i].y);
|
||||||
child.translateZ(positions[i].z);
|
child.translateZ(positions[i].z);
|
||||||
new_id = child.id;
|
new_id = child.id;
|
||||||
|
child.geometry = toGeometry(child.geometry);
|
||||||
|
child.geometry.mergeVertices();
|
||||||
|
child.geometry.computeFaceNormals();
|
||||||
|
child.geometry.computeVertexNormals();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
spheres[i] = object;
|
spheres[i] = object;
|
||||||
|
|
Loading…
Reference in New Issue