Pocket

みなさん、こんにちは。ishibashiです。

今回はちょっと面白そうだったのでthree.jsというライブラリを利用してお手軽に3Dグラフィックスを作成したいと思います。
three.jsはHTML5のcanvasタグを使用するので、HTML5に対応しているブラウザで閲覧してください。

ここではここのサンプルに沿って以下の手順で処理を記述します。

 1.カメラを用意
 2.シーンを用意
 3.ジオメトリーを作成
 4.マテリアルを作成
 5.メッシュを作成
 6.メッシュをシーンに追加
 7.レンダラーを用意
 8.レンダラーをDOMに追加
 9.アニメーション
10.レンダリング

実際のコードは以下のようになります。

    var camera, scene, renderer,
    geometry, material, mesh;

    init();
    animate();

    function init() {

        // 1.カメラを用意
        camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
        camera.position.z = 1000;

        // 2.シーンを用意
        scene = new THREE.Scene();
        scene.add( camera );

        // 3.ジオメトリーを作成
        geometry = new THREE.CubeGeometry( 200, 200, 200 );

        // 4.マテリアルを作成
        material = new THREE.MeshBasicMaterial( { color: 0xff0000, wireframe: true } );

        // 5.メッシュを作成
        mesh = new THREE.Mesh( geometry, material );

        // 6.メッシュをシーンに追加
        scene.add( mesh );

        // 7.レンダラーを用意
        renderer = new THREE.CanvasRenderer();

        renderer.setSize( window.innerWidth, window.innerHeight );

        // 8.レンダラーをDOMに追加
        document.body.appendChild( renderer.domElement );

    }

    function animate() {

        // 9.アニメーション
        requestAnimationFrame( animate );
        render();

    }

    function render() {

        mesh.rotation.x += 0.01;
        mesh.rotation.y += 0.02;

        // 10.レンダリング
        renderer.render( scene, camera );

    }

上記のコードを実装するとこんな感じになります。

3Dグラフィックサンプル

今回はこれを拡張して以下のものを作成しました。

主な拡張点は以下の3点です。
1.オブジェクトの数を3つ追加
2.オブジェクト種類の変更
3.マウスの移動に連動して一部動作するように変更

※ソースにコメントを追加してますので、実装方法はそちらを参照してください。

修正版3Dグラフィック

参考:three.jsのAPIリファレンスはこちら

今回はhtml5 + javascriptで3Dグラフィックスを表示してみました。
今回は表示がメインですが、クリックイベントを拾うなどしてより動的な処理を追加していけば、
HTMLとjavascriptのみで高機能なGAMEなどを作成することも可能になります。

ではでは〜