前提・実現したいこと
Three.jsで作った球体SphereGeometryに 1024x512 のキャンバスをマッピングしたいと思っています。
現状
以下のように実装してみましたが、うまく反映されません。
javascript
1 container = document.getElementById("body"); 2 renderer = new THREE.WebGLRenderer(); 3 renderer.setSize(window.innerWidth, window.innerHeight); 4 container.appendChild(renderer.domElement); 5 6 camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000); 7 camera.position.z = 500; 8 9 var canvas = document.getElementById("canvas"); 10 geometry = new THREE.SphereGeometry(150, 30, 30); 11 texture = new THREE.Texture(canvas); 12 material = new THREE.MeshBasicMaterial({ 13 map: texture 14 }); 15 mesh = new THREE.Mesh(geometry, material); 16 scene.add(mesh);
球体自体は生成されますが、キャンバスの中身は描画されていません。
また、キャンバスも特に変化がありません。
(マッピングできた場合どうなるのかわかりませんが)
補足情報
- Windows10
- three.js 最新
調べてみても、上記の方法しか紹介されておらず、どうしたものかと悩んでいます。
アドバイスをいただければ幸いです。
Canvasの内容 ※追記
キャンバスには、世界規模の風速データを非同期で描画する処理を行っています。
http://www.techscore.com/blog/2015/12/13/wind_visualization/
↑データとコードはこちらを参考にしています。
キャンバスは、X:1024, Y:512のサイズで2D描画しています。
var canvas = d3.select("body").append("canvas") .attr("id", "canvas") .attr("width", 1024) .attr("height", 512); var xhr = new XMLHttpRequest(); xhr.open('GET', './wind.ieee', true); // responseType="arraybuffer":サーバに期待するレスポンスタイプを変更できる。 xhr.responseType = 'arraybuffer'; xhr.onload = function(e) { var buffer = this.response; var wind = new Float32Array(buffer.byteLength / 4); var dataview = new DataView(buffer); for (var i = 0; i < wind.length; i++) { wind[i] = dataview.getFloat32(i * 4); } App.run(canvas, wind); } xhr.send();
稚拙な文章で申し訳ないのですが、アドバイスや解決へのアプローチ方法などいただければ幸いです。
回答2件
あなたの回答
tips
プレビュー