お世話になります。Three.jsについて勉強しているのですが、TextGeometryについて
分からないことがあり、質問させていただきます。
現在、表示したい文字と座標を格納した2つのアレイからデータを読み込み、3Dテキストを
配置しようとしています。
作成したのは以下のコード(抜粋です)なのですが、これですと文字が配置されません。
var sText; var sMaterial; var textGeo; var loader = new THREE.FontLoader(); for (var i = 0; i < Name.length; i++) { loader.load( 'fonts/helvetiker_regular.typeface.js', function ( font ) { textGeo = new THREE.TextGeometry(Name[i], { font: font, size: 5, . 中略 . }); sMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff } ); sText = new THREE.Mesh( textGeo, sMaterial ); sText.position.set(points[i].position.x,points[i].position.y, points[i].position.z); text_array.push(sText); scene.add( sText ); }); }
不思議なのは、以下の様に書くと、正常に配置されることです。
ということは、表示したい文字と座標のデータは、アレイに正常に格納されていると思われます。
var sText; var sMaterial; var textGeo; var loader = new THREE.FontLoader(); loader.load( 'fonts/helvetiker_regular.typeface.js', function ( font ) { textGeo = new THREE.TextGeometry(Name[0], { font: font, size: 5, . 中略 . }); sMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff } ); sText = new THREE.Mesh( textGeo, sMaterial ); sText.position.set(points[0].position.x,points[0].position.y, points[0].position.z); text_array.push(sText); scene.add( sText ); });
do whileでも駄目でしたので、恐らくループのネストの中に入れてはいけないものを
書いてしまっているのではないかと思うのですが、色々変えてもどこが悪いか特定できません。
http://chatora.lolipop.jp/?p=176
こちらのサイトを参考にさせていただきましたが、ループを使ったTextGeometryの配置は可能なようです。
違うのはThree.jsのバージョンの違いから、フォントデータ(json)をhtmlではなくscriptの中から
読み込んでいる点です。
どこが悪いかご教授下さい。よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー