Three.js(WebGL)の三角形の描画と形状の作成についてです。
三角形をもちいてオリジナルな形状を作ろうと思うのですが、上手くいきません。
三角形で球を作る場合を考えてみました。
geometry = new THREE.Geometry(); //球の頂点座標を取得 sphere = new THREE.SphereGeometry(200, 10, 10); //球の頂点座標をgeometryに割り当てていく for (var n = 0; n < sphere.vertices.length; n++) { var x = sphere.vertices[n].x; var y = sphere.vertices[n].y; var z = sphere.vertices[n].z; geometry.vertices.push(new THREE.Vector3(x, y, z)); } //三角形を形成 for (var i = 0; i < sphere.vertices.length; i++) { geometry.faces.push(new THREE.Face3( i, i+1, i+2)); } material = new THREE.MeshPhongMaterial({color: 0xff0000}); mesh = new THREE.Mesh(geometry, material); scene.add(mesh);
new THREE.SphereGeometry(200, 10, 10);で縦横10分割して0から順番に座標をgeometryに割り当てていったのですが、やはり分割の仕方が悪く隣り合う点同士を結んでしまい、正三角形が密集したようなきれいな球になりません。
球に限らず、ある形状の頂点を取り、表面を三角形で覆うように配置するにはどのように考えるべきなのでしょうか。
目標としては下記サイトのような動きを視野に入れております。
https://garden-eight.com/
ばらばらの三角形が集合し、様々なオブジェクトを形成しています。このためには予め用意されているオブジェクトの頂点ではなく個別に三角形を複数用意し、各三角形の頂点の相対位置が変わらないようグループを作り動かす必要がありそうです。そして、3つの頂点の内2つずつを結んで形状を作成していくように思います(見当違いかもしれません)
実際のコードではなく、考え方でも構いませんのでご意見をお聞かせください。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/24 23:54