2013-05-06 3 views

Répondre

4
var width = 100, height = 100, width_segments =1, height_segments = 100; 
var plane = new THREE.PlaneGeometry(width, height, width_segments, height_segments); 

for(var i=0; i<plane.vertices.length/2; i++) { 
    plane.vertices[2*i].position.z = Math.pow(2, i/20); 
    plane.vertices[2*i+1].position.z = Math.pow(2, i/20); 
} 

var mesh = new THREE.Mesh(plane, new THREE.MeshLambertMaterial({color: 0x888888})); 
mesh.doubleSided = true; 
mesh.rotation.y = Math.PI/2-0.5; 
scene.add(mesh); 

Vous créez la géométrie, et le déplacer est sommets comme vous le souhaitez. Pour créer une surface courbe, vous pouvez utiliser les fonctions 'sin' ou 'cos', ou exponentielles, comme je l'ai montré. J'espère que cela aide.

+0

Très belle solution merci. Pensez-vous qu'il est possible d'obtenir ce type de qualité (interaction, rendu, etc.) avec three.js ou devrais-je emprunter une autre voie? http://www.guardian.co.uk/world/interactive/2011/mar/22/middle-east-protest-interactive-timeline – dani

+0

Oui, je le crois. Ces "pins" pourraient être rendus comme Sprites dans Three.js. L'interaction devrait être simple puisque Three.js fournit la classe Ray et vous donne autant de liberté que nécessaire. J'irais avec webGL/Three.js, mieux que css3, deffinately. –

+0

Merci, j'espère que je serai en mesure d'atteindre le même niveau de qualité en utilisant webGL. – dani

Questions connexes