この記事を最初に書いた、2012-03-25 では、Three.js は r47 でした。現在 r69 になり、js ライブラリの参照単位や、クラスの仕様も変わり、座標の設定方法もかなり変わっていました。( 現在 THREE.Sprite を使用しており、ソース内にあるサンプルのマテリアルを使用できますが、昔は無かったので {} を変わりに使用して単純な線を引いています。引数に何も指定しないと、規定のマテリアルが使用されて、ソースコード上で未使用のマテリアルを引数にセットした状態と同じになります ) さらにいろいろテストしてみると、Vertex オブジェクトが無くなっている事がわかりました。r69 では、直接 Vector3 を geometry.vertices.push できるようです。 Vector3 によるデモ Sprite によるデモ※ リロードする毎にランダムに線を引きます 正直 3D に関する知識はたいして持ち合わせていないので、サンプルの動作からオリジナルソースの中を読んで自分なりに納得した内容を記述しているので、間違っているかもしれま せん。
<script type="text/javascript" src="http://winofsql.jp/js/three/three69.min.js"></script>
<script type="text/javascript" src="http://winofsql.jp/js/three/renderers/Projector.js"></script>
<script type="text/javascript" src="http://winofsql.jp/js/three/renderers/CanvasRenderer.js"></script>
<script type="text/javascript">
container = document.createElement('div');
container.setAttribute("id", "container");
document.body.appendChild(container);
camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
camera.position.z = 1200;
camera.position.y = -200;
scene = new THREE.Scene();
scene.add( camera );
renderer = new THREE.CanvasRenderer();
renderer.setClearColor( 0xffffff );
renderer.setSize( 700, 500 );
container.appendChild( renderer.domElement );
// **************************************
// Geometry は、描画に必要なデータ収納庫
// **************************************
var geometry = new THREE.Geometry();
// **************************************
// ライン用のマテリアル( ここでは未使用 )
// **************************************
var PI2 = Math.PI * 2;
var material = new THREE.SpriteCanvasMaterial( {
color: 0xffffff,
program: function ( context ) {
context.beginPath();
context.arc( 0, 0, 0.5, 0, PI2, true );
context.fill();
}
} );
// 座標を4つ作成
for ( var i = 0; i < 4; i ++ ) {
// 座標を作成
particle = new THREE.Sprite( {} );
particle.position.x = Math.random() * 2 - 1;
particle.position.y = Math.random() * 2 - 1;
particle.position.z = Math.random() * 2 - 1;
particle.position.normalize();
particle.position.multiplyScalar( Math.random() * 10 + 450 );
particle.scale.x = particle.scale.y = 10;
scene.add( particle );
geometry.vertices.push( particle.position );
}
// **************************************
// geometry を使って順につなげる『線』を描画
// 線に対する属性として、色と不透明度と太さを設定
// **************************************
line = new THREE.Line(
geometry,
new THREE.LineBasicMaterial( { color: 0x000000, opacity: 1.0, linewidth: 5 } )
);
scene.add( line );
renderer.render( scene, camera );
</script>
|
|
【Three.jsの最新記事】
- r69 で再チェックしました / Three.js(r53) で追加された LineDashedMaterial のサンプルを簡素化して解りやすくしました
- Three.js : 好きな背景透過画像を飛翔させる
- Three.js : Vector3 オブジェクトのコンストラクタ / result = x || 0; という書き方
- Three.js : WebGL限定の Cube テクスチャによる『パノラマ背景』
- Three.js : 球を使った『パノラマ背景』
- Three.js の canvas_geometry_birds の『鳥』だけを取り出して考える
- ユーザ定義の THREE.UserCubes1 オブジェクトを使って、カメラでその周りを周回する
- Three.js : カメラが発射する Ray(光) にヒットするオブジェクトを総取りする
- Three.js の点線表示の詳細( 特に Windows で WebGL では線の太さは実装なし )
- Three.js でキューブの『テクスチャ面設定』とスケール・X軸回転を jQuery のスライダーでテストする
- Three.js の座標系の向きを テクスチャを貼りつけたキューブと jQuery のスライダー で確認する
- Three.js を使って DAZStudio でレンダリングした女性をちょっと湾曲した炎の前に立たす 〜 Three.js エフェクトの可能性
- Three.js 3Dゲームワールド(を夢見て)リアルサンプル
- Three.js の webgl_geometry_minecraft.html で使われている Cube World を使って、3D モデルを乗っけてカメラを動かすとかなりいい雰囲気です
- THREE.Scene クラスの remove メソッド
- Three.js の個別ソースを使った部分カスタマイズ
- Three.js : あるスケールでの平均した座標集合の作成





























