SlideShare a Scribd company logo
1 of 43
Download to read offline
Three.jsで3D気分
              3D素人でもちょっぴり操作できそう!

               HTML5 勉強会@福岡 - 第18回
                2012.10.5(金)




12年10月7日日曜日
自己紹介
              下請けプログラマの江原と言います。

              twitter:itokami1123 です。

              JavaScriptとObjective-Cが好きです。HTML5やiOSの案
              件がありましたら是非仕事ください。

              本日お話します3Dについては知ったかぶりですので間
              違ってたらビシビシ(優しく)指摘お願いしますね。


12年10月7日日曜日
HTML5で3D?
          HTML5にはブラウザでスムーズに

          3D表示可能なWebGLがつきました。

          ちょっと見てみましょう↓

          http://alteredqualia.com/three/examples/webgl_cars.html




12年10月7日日曜日
すごいですね!




12年10月7日日曜日
しかし残念な事にスマートフォンでは、ほぼ使えない状況で
        す。http://mobilehtml5.org/




        でも来年には使える状況になる可能性があります。

        今覚えておけばいつか仕事に困らないかも!




12年10月7日日曜日
WebGLはむずい?


              ところが.....難しい...

              私のようなOpenGLは使った事がない人には
              とても扱いが難しいものです。

              しかし、なんとか3D表示してみたいなぁと
              思う訳です。


12年10月7日日曜日
Three.js



              そこで「Three.js」を使います。

              DOMを便利に操作するjQueryのように

              WebGLを扱うライブラリです!

12年10月7日日曜日
手に入れよう!
        https://github.com/mrdoob/three.js/

        ライブラリは、githubから




        buildにライブラリが入っています。



12年10月7日日曜日
ざっくり仕組み
              1) scene      仮想3次元空間

                            camara   カメラの目線

                            light    照明

                            mesh     物

              2) renderer   canvasに3Dを描画する機能

              3) canvas     描画する場所(2次元)

12年10月7日日曜日
よくわかりません。。


              なので、ひとつひとつ見て行きましょう。




12年10月7日日曜日
scene




              Scene(シーン)は、3次元空間を生成し
              照明や物、カメラを配置できます。
              劇の舞台、htmlのbodyみたいな感じでしょうか。
12年10月7日日曜日
renderer
              rendererは2次元のcanvasに3次元を描画します。



                                                    html
                                                     div

                     renderer                         canvas
                     が描くよ
              ※犬の絵は、http://e-poket.com/illust/を使用しています。



12年10月7日日曜日
canvas
         canvasはhtml5のcanvasです。

         3D描画用としてThree.jsがdivの中に生成します。


                  html
                         div   canvas   Three.jsが
               divの                       生成
              準備が必要!


12年10月7日日曜日
続いて

              sceneに配置する物を説明します。




12年10月7日日曜日
camera
         レンダラーに描いて欲しい目線を教えます。

         カメラの 画角, 縦横比, クリッピング手前,クリッピング奥、
         位置などを変更すると色々な描画になります。




          画角とか?用語がむずかしいですね。。

12年10月7日日曜日
camera補足-画角
        画角(視野角)とは




                              ここ


        数字が大きい程広い範囲が見えます



              すばらしい参考ブログ:http://www.yomotsu.net/wp/?p=597



12年10月7日日曜日
camera補足-クリッピング
        クリッピングとは

                                             この範囲内が
                                                描画対象
                  手前
                                     奥

       無限に手前や奥を描画する訳ではないみたいですね。


              すばらしい参考ブログ:http://www.yomotsu.net/wp/?p=597



12年10月7日日曜日
light
              シーンの中に光を灯す照明です。

              位置や明るさを変える事が出来ます。




12年10月7日日曜日
mesh
         sceneに配置するオブジェクトです。


         構造を表す           素材を表す
         geometory       material       mesh!

                     +              =




12年10月7日日曜日
それでは実際に
              コーディングして
              みましょう!


12年10月7日日曜日
htmlの作成
        1. ライブラリを配置します。
        <script type="text/javascript" src="js/Three.min.js" >
        </script>



        2. divを用意します。
        <div id="threeJsPane" >
        <!-- ☆ Three.jsがここに描画するよ☆ -->
        </div>




12年10月7日日曜日
sceneの書き方




              下のように描けば3D空間が生成されます。
              var scene = new THREE.Scene();


12年10月7日日曜日
lightの書き方

        光の色と強さを指定してlightオブジェクトを作ります。
        var light = new THREE.PointLight( 色, 強さ );

        光源の位置を指定します。
        light.position.set( x座標, y座標, z座標 );

        シーンに加えます。
        scene.add(this.light);




12年10月7日日曜日
lightの種類
        実は、4種類あるみたいですけど
        今回のデモは、なんとなく点光源を選んでます。


              環境光            THREE.AmbientLight


              平行光源 (無限遠光源)   THREE.DirectionalLight


              点光源            THREE.PointLight


              スポットライト        THREE.SpotLight


12年10月7日日曜日
cameraの書き方

     色々指定してcameraオブジェクトを作ります。
     var camera = new THREE.PerspectiveCamera( 画角,縦
     横比, クリッピング手前, クリッピング奥 );

     カメラの座標を指定します
     camera.position.set( X座標, Y座標, Z座標 );




12年10月7日日曜日
cameraの書き方

        カメラの頭の向きを決めます。
        どれかを1にしてその他を0にします。
        camera.up.set ( up_x, up_y, up_z );


        カメラが見つめる座標を指定します。
        camera.lookAt( { x:0 , y:0 , z:0 });




12年10月7日日曜日
rendererの書き方
       レンダラーオブジェクトを生成します。
       var renderer = new THREE.WebGLRenderer({antialias:true});

       レンダラーが描く絵の横・縦幅を指定します。
       ※div要素と同じで良いと思います。
       renderer.setSize( 横幅 , 縦幅 );

       レンダラーが描く絵の背景の色を指定します。
       renderer.setClearColorHex( 色 , 透明度 );

       描画先のdiv要素に追加して完成です!
       $(div要素).append( $(renderer.domElement) );




12年10月7日日曜日
rendererの描き方
       レンダラーの描画は以下のようにループさせます。

       var animationLoop = function(){

         // ☆描画!!
         renderer.render( scene, camera );

         requestAnimationFrame( animationLoop );

       }

       animationLoop();


12年10月7日日曜日
rendererの動かし方
                requestAnimationFrameって何??

                setIntervalでも出来るのですけど
                ブラウザが裏に回っている時は、
                動作しない為、こちらを使った方が
                負荷が軽そうです。

                ※1秒間に60回描画するみたいです。



              参考URL http://d.hatena.ne.jp/calpo/20110523/p1

12年10月7日日曜日
ここまでを
                   動かしてみましょう。
              デモURL:http://www.itokami1123.com/Three/20121005/




12年10月7日日曜日
なにも出ません!

               なんも物を置いてないからです。




12年10月7日日曜日
meshの書き方 箱

      箱の構造を作成します。
      var gemetry = new THREE.CubeGeometry( 幅, 高さ,
      奥行き );

      つづいて箱の表面の素材を作ります。
      (下の例は光を反射する素材です)
      var material = new
      THREE.MeshLambertMaterial({ color: 色 });




12年10月7日日曜日
meshの書き方 箱
     合体すると箱メッシュになります。
     var box = new THREE.Mesh( gemetry, material );

     箱の座標を指定します。
     box.position.set( x, y, z );

     シーンに箱を登場させます。
     this.scene.add(this.box );

     どんな箱が出来るか確認してみましょう。
         デモURL:http://www.itokami1123.com/Three/20121005/
                       BOX_OFFボタンを押す

12年10月7日日曜日
meshの書き方 板

     地面が無いと寂しいので板を作って地面にしましょう。

     板の構造を生成
     var geometry = new THREE.PlaneGeometry(幅,高さ);

     地面の表面に今回は 画像(jpeg)を使ってみます。
     var material = new
     THREE.MeshBasicMaterial({
     map:THREE.ImageUtils.loadTexture('xxxx.jpg') });




12年10月7日日曜日
meshの書き方 板

     合体して地面の出来上がり
     var floor = new THREE.Mesh( geometry, material );

     シーンに登場させましょう
     scene.add( floor );




         デモURL:http://www.itokami1123.com/Three/20121005/
                      FLOOR_OFFボタンを押す

12年10月7日日曜日
meshの書き方 モデルデータ
     blenderで描いたモデルデータを
     変換してシーンに登場させることができます。
     まず、blenderに設定が必要です。

     ダウンロードしたライブラリの以下を
     mrdoob-three.js-ef5f05d/utils/exporters/blender/
     2.63/scripts/addons

     Blenderの中に貼付けます。
     ./Contents/MacOS/2.63/scripts/addons
     ※2.63を使っています。


12年10月7日日曜日
meshの書き方 モデルデータ



      blenderのデータは↓を使わせてもらいました。
      ありがとうございます。
      http://blog.romatica.com/tag/three-js/




12年10月7日日曜日
meshの書き方 モデルデータ
        File->Export->Three.jsで出力出来ます。




        ※ 手順が悪いのか。。何故かoctcat2.pngが無いエラーが出ますので
         octcat.pngをリネームして使いました。


12年10月7日日曜日
meshの書き方 モデルデータ

     このデータを読み込むには
     JSONLoaderオブジェクトを生成します。
     var loader = new THREE.JSONLoader();


     データの取得元とロード後によばれる関数を用意します。
     loader.load( "modelData.js", ロード後呼ばれる関数);




12年10月7日日曜日
meshの書き方 モデルデータ
     ロード後に、よばれる関数を用意します。
     var loadCallBack = function( geometry ){
      // geometoryが引数でくるのがポイントです!

       var material = new THREE.MeshFaceMaterial();
       var mesh = new THREE.Mesh(geometry,material);

       // モデルデータを配置すると小さい(大きい時)は
      // 以下で大きさを調整できます。
       mesh.scale.set( x座標 , y座標 , z座標 );



12年10月7日日曜日
meshの書き方 モデルデータ
     ロード後よばれる関数を用意します。
     var loadCallBack = function( geometry ){
      ・・つづき・・
         // 箱と同様に位置を設定します
         mash.position.set( 0, 0, 25 );

         // シーンに登場させましょう!
         scene.add( mesh );
     }

     それでは見てみましょう。
         デモURL:http://www.itokami1123.com/Three/20121005/
                      OCTCAT_OFFボタンを押す

12年10月7日日曜日
今日の内容はココまでです!




12年10月7日日曜日
最後まで聞いてくれて
              ありがとうございました!




12年10月7日日曜日

More Related Content

What's hot

iOSプログラマへ。HTML5 Canvasがおもしろい!
iOSプログラマへ。HTML5 Canvasがおもしろい!iOSプログラマへ。HTML5 Canvasがおもしろい!
iOSプログラマへ。HTML5 Canvasがおもしろい!cocopon
 
three.js はじめましょ
three.js はじめましょthree.js はじめましょ
three.js はじめましょHiroaki Okubo
 
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁Yutaro Miyazaki
 
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」nyagasuki
 
Flashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3DFlashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3DKatsushi Suzuki
 
Creators'night#13 tech#2今井
Creators'night#13 tech#2今井Creators'night#13 tech#2今井
Creators'night#13 tech#2今井Daisuke Imai
 
DOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵までDOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵までMasayuki Nakano
 
シェーダーしよっ☆ Let's play shaders!
シェーダーしよっ☆ Let's play shaders!シェーダーしよっ☆ Let's play shaders!
シェーダーしよっ☆ Let's play shaders!Yuichi Higuchi
 
React で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考えるReact で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考えるYutaro Miyazaki
 
Flashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DFlashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DKatsushi Suzuki
 
Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Masahiko Mizuta
 
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Hiroshi Yoshida
 
Webサイト・フロントエンドの高速化とgrunt.jsについて
Webサイト・フロントエンドの高速化とgrunt.jsについてWebサイト・フロントエンドの高速化とgrunt.jsについて
Webサイト・フロントエンドの高速化とgrunt.jsについてTomo Fujita
 
Ogre3d 基礎
Ogre3d 基礎Ogre3d 基礎
Ogre3d 基礎kw
 
Vue.js でタイマーを作る
Vue.js でタイマーを作るVue.js でタイマーを作る
Vue.js でタイマーを作るmizdra
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会Yukihiro Kitazawa
 

What's hot (20)

iOSプログラマへ。HTML5 Canvasがおもしろい!
iOSプログラマへ。HTML5 Canvasがおもしろい!iOSプログラマへ。HTML5 Canvasがおもしろい!
iOSプログラマへ。HTML5 Canvasがおもしろい!
 
Sencha study
Sencha studySencha study
Sencha study
 
three.js はじめましょ
three.js はじめましょthree.js はじめましょ
three.js はじめましょ
 
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
 
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」
 
Flashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3DFlashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3D
 
Mecha-Mozilla
Mecha-MozillaMecha-Mozilla
Mecha-Mozilla
 
Creators'night#13 tech#2今井
Creators'night#13 tech#2今井Creators'night#13 tech#2今井
Creators'night#13 tech#2今井
 
DOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵までDOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵まで
 
シェーダーしよっ☆ Let's play shaders!
シェーダーしよっ☆ Let's play shaders!シェーダーしよっ☆ Let's play shaders!
シェーダーしよっ☆ Let's play shaders!
 
React で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考えるReact で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考える
 
Cocos2d Shaders
Cocos2d ShadersCocos2d Shaders
Cocos2d Shaders
 
Flashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DFlashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3D
 
Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門
 
覚醒!JavaScript
覚醒!JavaScript覚醒!JavaScript
覚醒!JavaScript
 
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
 
Webサイト・フロントエンドの高速化とgrunt.jsについて
Webサイト・フロントエンドの高速化とgrunt.jsについてWebサイト・フロントエンドの高速化とgrunt.jsについて
Webサイト・フロントエンドの高速化とgrunt.jsについて
 
Ogre3d 基礎
Ogre3d 基礎Ogre3d 基礎
Ogre3d 基礎
 
Vue.js でタイマーを作る
Vue.js でタイマーを作るVue.js でタイマーを作る
Vue.js でタイマーを作る
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会
 

Viewers also liked

three.jsによる一歩進めたグラフィカルな表現
three.jsによる一歩進めたグラフィカルな表現three.jsによる一歩進めたグラフィカルな表現
three.jsによる一歩進めたグラフィカルな表現Kei Yagi
 
WebGLとvideoを組み合わせるおもしろい
WebGLとvideoを組み合わせるおもしろいWebGLとvideoを組み合わせるおもしろい
WebGLとvideoを組み合わせるおもしろいHiroyuki Anai
 
WebGLことはじめ
WebGLことはじめWebGLことはじめ
WebGLことはじめKazuya Hiruma
 
GLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめGLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめYoichi Hirata
 
シェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチングシェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチングSho Hosoda
 
チョコ溶かす奴
チョコ溶かす奴チョコ溶かす奴
チョコ溶かす奴翔 石井
 
WebGL (Three.js) Code Lab - Intro. [ GTUG Girls 10th]
WebGL (Three.js) Code Lab - Intro. [ GTUG Girls 10th]WebGL (Three.js) Code Lab - Intro. [ GTUG Girls 10th]
WebGL (Three.js) Code Lab - Intro. [ GTUG Girls 10th]Yukio Andoh
 
HTML5など社内勉強会 Vol.3 - 入門JavaScript
HTML5など社内勉強会 Vol.3 - 入門JavaScriptHTML5など社内勉強会 Vol.3 - 入門JavaScript
HTML5など社内勉強会 Vol.3 - 入門JavaScriptGeorge Harada
 
スマホにおけるWebGL入門
スマホにおけるWebGL入門スマホにおけるWebGL入門
スマホにおけるWebGL入門Yohta Kanke
 
子どもがOculusダメな理由を調べてみた
子どもがOculusダメな理由を調べてみた子どもがOculusダメな理由を調べてみた
子どもがOculusダメな理由を調べてみたHiromichi Yamada
 
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)Sho Hosoda
 
パノラマ動画VR再生のあれこれ
パノラマ動画VR再生のあれこれパノラマ動画VR再生のあれこれ
パノラマ動画VR再生のあれこれMakotoItoh
 
HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第三版
HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第三版HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第三版
HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第三版You_Kinjoh
 
今からハジメるHTML5プログラミング
今からハジメるHTML5プログラミング今からハジメるHTML5プログラミング
今からハジメるHTML5プログラミングSwapSkills
 
ようこそ、HTML5裏APIの世界へ - HTML5 Conference 2013
ようこそ、HTML5裏APIの世界へ - HTML5 Conference 2013ようこそ、HTML5裏APIの世界へ - HTML5 Conference 2013
ようこそ、HTML5裏APIの世界へ - HTML5 Conference 2013Futomi Hatano
 
CSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3DCSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3DAdvancedTechNight
 
Grimoire.js Community announcement June 20 2016
Grimoire.js Community announcement June 20 2016Grimoire.js Community announcement June 20 2016
Grimoire.js Community announcement June 20 2016翔 石井
 
【14-D-4】デベロッパー戦国時代!ストーリーをつなぐ開発環境と3つの秘訣
【14-D-4】デベロッパー戦国時代!ストーリーをつなぐ開発環境と3つの秘訣【14-D-4】デベロッパー戦国時代!ストーリーをつなぐ開発環境と3つの秘訣
【14-D-4】デベロッパー戦国時代!ストーリーをつなぐ開発環境と3つの秘訣智治 長沢
 

Viewers also liked (20)

three.jsによる一歩進めたグラフィカルな表現
three.jsによる一歩進めたグラフィカルな表現three.jsによる一歩進めたグラフィカルな表現
three.jsによる一歩進めたグラフィカルな表現
 
WebGLとvideoを組み合わせるおもしろい
WebGLとvideoを組み合わせるおもしろいWebGLとvideoを組み合わせるおもしろい
WebGLとvideoを組み合わせるおもしろい
 
楽しいShaderToy
楽しいShaderToy楽しいShaderToy
楽しいShaderToy
 
WebGLことはじめ
WebGLことはじめWebGLことはじめ
WebGLことはじめ
 
GLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめGLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめ
 
シェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチングシェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチング
 
Threejs使ってみた
Threejs使ってみたThreejs使ってみた
Threejs使ってみた
 
チョコ溶かす奴
チョコ溶かす奴チョコ溶かす奴
チョコ溶かす奴
 
WebGL (Three.js) Code Lab - Intro. [ GTUG Girls 10th]
WebGL (Three.js) Code Lab - Intro. [ GTUG Girls 10th]WebGL (Three.js) Code Lab - Intro. [ GTUG Girls 10th]
WebGL (Three.js) Code Lab - Intro. [ GTUG Girls 10th]
 
HTML5など社内勉強会 Vol.3 - 入門JavaScript
HTML5など社内勉強会 Vol.3 - 入門JavaScriptHTML5など社内勉強会 Vol.3 - 入門JavaScript
HTML5など社内勉強会 Vol.3 - 入門JavaScript
 
スマホにおけるWebGL入門
スマホにおけるWebGL入門スマホにおけるWebGL入門
スマホにおけるWebGL入門
 
子どもがOculusダメな理由を調べてみた
子どもがOculusダメな理由を調べてみた子どもがOculusダメな理由を調べてみた
子どもがOculusダメな理由を調べてみた
 
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)
 
パノラマ動画VR再生のあれこれ
パノラマ動画VR再生のあれこれパノラマ動画VR再生のあれこれ
パノラマ動画VR再生のあれこれ
 
HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第三版
HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第三版HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第三版
HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第三版
 
今からハジメるHTML5プログラミング
今からハジメるHTML5プログラミング今からハジメるHTML5プログラミング
今からハジメるHTML5プログラミング
 
ようこそ、HTML5裏APIの世界へ - HTML5 Conference 2013
ようこそ、HTML5裏APIの世界へ - HTML5 Conference 2013ようこそ、HTML5裏APIの世界へ - HTML5 Conference 2013
ようこそ、HTML5裏APIの世界へ - HTML5 Conference 2013
 
CSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3DCSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3D
 
Grimoire.js Community announcement June 20 2016
Grimoire.js Community announcement June 20 2016Grimoire.js Community announcement June 20 2016
Grimoire.js Community announcement June 20 2016
 
【14-D-4】デベロッパー戦国時代!ストーリーをつなぐ開発環境と3つの秘訣
【14-D-4】デベロッパー戦国時代!ストーリーをつなぐ開発環境と3つの秘訣【14-D-4】デベロッパー戦国時代!ストーリーをつなぐ開発環境と3つの秘訣
【14-D-4】デベロッパー戦国時代!ストーリーをつなぐ開発環境と3つの秘訣
 

Similar to Three.jsで3D気分

セーラーソン振り返り
セーラーソン振り返りセーラーソン振り返り
セーラーソン振り返りMasafumi Terazono
 
Flashじゃなくて HTML5で ビュンビュン動くサイトを 作ってと言われたら
Flashじゃなくて HTML5で ビュンビュン動くサイトを 作ってと言われたらFlashじゃなくて HTML5で ビュンビュン動くサイトを 作ってと言われたら
Flashじゃなくて HTML5で ビュンビュン動くサイトを 作ってと言われたらHiroaki Okubo
 
JavaScriptをまじめに考えました+
JavaScriptをまじめに考えました+JavaScriptをまじめに考えました+
JavaScriptをまじめに考えました+Hiroaki Okubo
 
iPhoneアプリを作ってみよう
iPhoneアプリを作ってみようiPhoneアプリを作ってみよう
iPhoneアプリを作ってみようNagao Shun
 
Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶHiroshi Oyamada
 
Cocos2dshader devcon jp_20120621_en
Cocos2dshader devcon jp_20120621_enCocos2dshader devcon jp_20120621_en
Cocos2dshader devcon jp_20120621_enRicardo Quesada
 
文系デザイナーでも大丈夫!レスポンシブWEBサイトをWordPressで作ってみよう
文系デザイナーでも大丈夫!レスポンシブWEBサイトをWordPressで作ってみよう文系デザイナーでも大丈夫!レスポンシブWEBサイトをWordPressで作ってみよう
文系デザイナーでも大丈夫!レスポンシブWEBサイトをWordPressで作ってみようJunko Nukaga
 
GameKitを使ったBluetoothプログラミング
GameKitを使ったBluetoothプログラミングGameKitを使ったBluetoothプログラミング
GameKitを使ったBluetoothプログラミングtaiko19xx
 
Fireworks or Photoshop【第3回ゆるふわ勉強会】
Fireworks or Photoshop【第3回ゆるふわ勉強会】Fireworks or Photoshop【第3回ゆるふわ勉強会】
Fireworks or Photoshop【第3回ゆるふわ勉強会】Komei Otake
 
物理エンジンを使って 3Dに息を吹き込む
物理エンジンを使って 3Dに息を吹き込む物理エンジンを使って 3Dに息を吹き込む
物理エンジンを使って 3Dに息を吹き込むKazuya Hiruma
 
0406web creators night_DeNA
0406web creators night_DeNA0406web creators night_DeNA
0406web creators night_DeNADeNA_open_events
 
3D Photo Tool by Ruby/Sinatra + JavaScript
3D Photo Tool by Ruby/Sinatra + JavaScript3D Photo Tool by Ruby/Sinatra + JavaScript
3D Photo Tool by Ruby/Sinatra + JavaScriptNISHIMOTO Keisuke
 
MacRubyとHotCocoaでMacのアプリを作ってみた
MacRubyとHotCocoaでMacのアプリを作ってみたMacRubyとHotCocoaでMacのアプリを作ってみた
MacRubyとHotCocoaでMacのアプリを作ってみたYukimitsu Izawa
 
社会ネットワーク分析第7回
社会ネットワーク分析第7回社会ネットワーク分析第7回
社会ネットワーク分析第7回Satoru Mikami
 
JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所Koji Nakamura
 
Sugarcubeをはじめよう
SugarcubeをはじめようSugarcubeをはじめよう
SugarcubeをはじめようEihiro Saishu
 
Bitter Sweet Javascript
Bitter Sweet JavascriptBitter Sweet Javascript
Bitter Sweet JavascriptDaichi Hiroki
 

Similar to Three.jsで3D気分 (20)

セーラーソン振り返り
セーラーソン振り返りセーラーソン振り返り
セーラーソン振り返り
 
Flashじゃなくて HTML5で ビュンビュン動くサイトを 作ってと言われたら
Flashじゃなくて HTML5で ビュンビュン動くサイトを 作ってと言われたらFlashじゃなくて HTML5で ビュンビュン動くサイトを 作ってと言われたら
Flashじゃなくて HTML5で ビュンビュン動くサイトを 作ってと言われたら
 
JavaScriptをまじめに考えました+
JavaScriptをまじめに考えました+JavaScriptをまじめに考えました+
JavaScriptをまじめに考えました+
 
Kuug 第1回
Kuug 第1回Kuug 第1回
Kuug 第1回
 
iPhoneアプリを作ってみよう
iPhoneアプリを作ってみようiPhoneアプリを作ってみよう
iPhoneアプリを作ってみよう
 
Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶ
 
Cocos2dshader devcon jp_20120621_en
Cocos2dshader devcon jp_20120621_enCocos2dshader devcon jp_20120621_en
Cocos2dshader devcon jp_20120621_en
 
Aiming study#6pdf
Aiming study#6pdfAiming study#6pdf
Aiming study#6pdf
 
文系デザイナーでも大丈夫!レスポンシブWEBサイトをWordPressで作ってみよう
文系デザイナーでも大丈夫!レスポンシブWEBサイトをWordPressで作ってみよう文系デザイナーでも大丈夫!レスポンシブWEBサイトをWordPressで作ってみよう
文系デザイナーでも大丈夫!レスポンシブWEBサイトをWordPressで作ってみよう
 
GameKitを使ったBluetoothプログラミング
GameKitを使ったBluetoothプログラミングGameKitを使ったBluetoothプログラミング
GameKitを使ったBluetoothプログラミング
 
Fireworks or Photoshop【第3回ゆるふわ勉強会】
Fireworks or Photoshop【第3回ゆるふわ勉強会】Fireworks or Photoshop【第3回ゆるふわ勉強会】
Fireworks or Photoshop【第3回ゆるふわ勉強会】
 
Web GLの話
Web GLの話Web GLの話
Web GLの話
 
物理エンジンを使って 3Dに息を吹き込む
物理エンジンを使って 3Dに息を吹き込む物理エンジンを使って 3Dに息を吹き込む
物理エンジンを使って 3Dに息を吹き込む
 
0406web creators night_DeNA
0406web creators night_DeNA0406web creators night_DeNA
0406web creators night_DeNA
 
3D Photo Tool by Ruby/Sinatra + JavaScript
3D Photo Tool by Ruby/Sinatra + JavaScript3D Photo Tool by Ruby/Sinatra + JavaScript
3D Photo Tool by Ruby/Sinatra + JavaScript
 
MacRubyとHotCocoaでMacのアプリを作ってみた
MacRubyとHotCocoaでMacのアプリを作ってみたMacRubyとHotCocoaでMacのアプリを作ってみた
MacRubyとHotCocoaでMacのアプリを作ってみた
 
社会ネットワーク分析第7回
社会ネットワーク分析第7回社会ネットワーク分析第7回
社会ネットワーク分析第7回
 
JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所
 
Sugarcubeをはじめよう
SugarcubeをはじめようSugarcubeをはじめよう
Sugarcubeをはじめよう
 
Bitter Sweet Javascript
Bitter Sweet JavascriptBitter Sweet Javascript
Bitter Sweet Javascript
 

More from Toshio Ehara

iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?Toshio Ehara
 
Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料Toshio Ehara
 
Java電卓勉強会資料
Java電卓勉強会資料Java電卓勉強会資料
Java電卓勉強会資料Toshio Ehara
 
BABELで、ES2015(ES6)を学ぼう!
BABELで、ES2015(ES6)を学ぼう!BABELで、ES2015(ES6)を学ぼう!
BABELで、ES2015(ES6)を学ぼう!Toshio Ehara
 
AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化Toshio Ehara
 
traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験Toshio Ehara
 
traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験Toshio Ehara
 
AngularJS入門の巻2
AngularJS入門の巻2AngularJS入門の巻2
AngularJS入門の巻2Toshio Ehara
 
JenkinsをJava開発でこんな感じで使っています
JenkinsをJava開発でこんな感じで使っていますJenkinsをJava開発でこんな感じで使っています
JenkinsをJava開発でこんな感じで使っていますToshio Ehara
 
AngularJS入門の巻
AngularJS入門の巻AngularJS入門の巻
AngularJS入門の巻Toshio Ehara
 
AngularJS+TypeScriptを試してみた。
AngularJS+TypeScriptを試してみた。AngularJS+TypeScriptを試してみた。
AngularJS+TypeScriptを試してみた。Toshio Ehara
 
AngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃおAngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃおToshio Ehara
 
HTML5のCanvas入門 - Img画像を編集してみよう -
HTML5のCanvas入門 - Img画像を編集してみよう -HTML5のCanvas入門 - Img画像を編集してみよう -
HTML5のCanvas入門 - Img画像を編集してみよう -Toshio Ehara
 
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!Toshio Ehara
 
福岡のIT勉強会情報の集め方(LT資料)
福岡のIT勉強会情報の集め方(LT資料)福岡のIT勉強会情報の集め方(LT資料)
福岡のIT勉強会情報の集め方(LT資料)Toshio Ehara
 
BACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発についてBACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発についてToshio Ehara
 
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)Toshio Ehara
 
JavaScriptのテストコード 一緒に勉強しませんか??
JavaScriptのテストコード 一緒に勉強しませんか??JavaScriptのテストコード 一緒に勉強しませんか??
JavaScriptのテストコード 一緒に勉強しませんか??Toshio Ehara
 
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜Toshio Ehara
 
LT Leap MotionとJavaScriptで遊ぼう!
LT Leap MotionとJavaScriptで遊ぼう!LT Leap MotionとJavaScriptで遊ぼう!
LT Leap MotionとJavaScriptで遊ぼう!Toshio Ehara
 

More from Toshio Ehara (20)

iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?
 
Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料
 
Java電卓勉強会資料
Java電卓勉強会資料Java電卓勉強会資料
Java電卓勉強会資料
 
BABELで、ES2015(ES6)を学ぼう!
BABELで、ES2015(ES6)を学ぼう!BABELで、ES2015(ES6)を学ぼう!
BABELで、ES2015(ES6)を学ぼう!
 
AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化
 
traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験
 
traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験
 
AngularJS入門の巻2
AngularJS入門の巻2AngularJS入門の巻2
AngularJS入門の巻2
 
JenkinsをJava開発でこんな感じで使っています
JenkinsをJava開発でこんな感じで使っていますJenkinsをJava開発でこんな感じで使っています
JenkinsをJava開発でこんな感じで使っています
 
AngularJS入門の巻
AngularJS入門の巻AngularJS入門の巻
AngularJS入門の巻
 
AngularJS+TypeScriptを試してみた。
AngularJS+TypeScriptを試してみた。AngularJS+TypeScriptを試してみた。
AngularJS+TypeScriptを試してみた。
 
AngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃおAngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃお
 
HTML5のCanvas入門 - Img画像を編集してみよう -
HTML5のCanvas入門 - Img画像を編集してみよう -HTML5のCanvas入門 - Img画像を編集してみよう -
HTML5のCanvas入門 - Img画像を編集してみよう -
 
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
 
福岡のIT勉強会情報の集め方(LT資料)
福岡のIT勉強会情報の集め方(LT資料)福岡のIT勉強会情報の集め方(LT資料)
福岡のIT勉強会情報の集め方(LT資料)
 
BACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発についてBACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発について
 
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
 
JavaScriptのテストコード 一緒に勉強しませんか??
JavaScriptのテストコード 一緒に勉強しませんか??JavaScriptのテストコード 一緒に勉強しませんか??
JavaScriptのテストコード 一緒に勉強しませんか??
 
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
 
LT Leap MotionとJavaScriptで遊ぼう!
LT Leap MotionとJavaScriptで遊ぼう!LT Leap MotionとJavaScriptで遊ぼう!
LT Leap MotionとJavaScriptで遊ぼう!
 

Three.jsで3D気分

  • 1. Three.jsで3D気分 3D素人でもちょっぴり操作できそう! HTML5 勉強会@福岡 - 第18回 2012.10.5(金) 12年10月7日日曜日
  • 2. 自己紹介 下請けプログラマの江原と言います。 twitter:itokami1123 です。 JavaScriptとObjective-Cが好きです。HTML5やiOSの案 件がありましたら是非仕事ください。 本日お話します3Dについては知ったかぶりですので間 違ってたらビシビシ(優しく)指摘お願いしますね。 12年10月7日日曜日
  • 3. HTML5で3D? HTML5にはブラウザでスムーズに 3D表示可能なWebGLがつきました。 ちょっと見てみましょう↓ http://alteredqualia.com/three/examples/webgl_cars.html 12年10月7日日曜日
  • 5. しかし残念な事にスマートフォンでは、ほぼ使えない状況で す。http://mobilehtml5.org/ でも来年には使える状況になる可能性があります。 今覚えておけばいつか仕事に困らないかも! 12年10月7日日曜日
  • 6. WebGLはむずい? ところが.....難しい... 私のようなOpenGLは使った事がない人には とても扱いが難しいものです。 しかし、なんとか3D表示してみたいなぁと 思う訳です。 12年10月7日日曜日
  • 7. Three.js そこで「Three.js」を使います。 DOMを便利に操作するjQueryのように WebGLを扱うライブラリです! 12年10月7日日曜日
  • 8. 手に入れよう! https://github.com/mrdoob/three.js/ ライブラリは、githubから buildにライブラリが入っています。 12年10月7日日曜日
  • 9. ざっくり仕組み 1) scene 仮想3次元空間 camara カメラの目線 light 照明 mesh 物 2) renderer canvasに3Dを描画する機能 3) canvas 描画する場所(2次元) 12年10月7日日曜日
  • 10. よくわかりません。。 なので、ひとつひとつ見て行きましょう。 12年10月7日日曜日
  • 11. scene Scene(シーン)は、3次元空間を生成し 照明や物、カメラを配置できます。 劇の舞台、htmlのbodyみたいな感じでしょうか。 12年10月7日日曜日
  • 12. renderer rendererは2次元のcanvasに3次元を描画します。 html div renderer canvas が描くよ ※犬の絵は、http://e-poket.com/illust/を使用しています。 12年10月7日日曜日
  • 13. canvas canvasはhtml5のcanvasです。 3D描画用としてThree.jsがdivの中に生成します。 html div canvas Three.jsが divの 生成 準備が必要! 12年10月7日日曜日
  • 14. 続いて sceneに配置する物を説明します。 12年10月7日日曜日
  • 15. camera レンダラーに描いて欲しい目線を教えます。 カメラの 画角, 縦横比, クリッピング手前,クリッピング奥、 位置などを変更すると色々な描画になります。 画角とか?用語がむずかしいですね。。 12年10月7日日曜日
  • 16. camera補足-画角 画角(視野角)とは ここ 数字が大きい程広い範囲が見えます すばらしい参考ブログ:http://www.yomotsu.net/wp/?p=597 12年10月7日日曜日
  • 17. camera補足-クリッピング クリッピングとは この範囲内が 描画対象 手前 奥 無限に手前や奥を描画する訳ではないみたいですね。 すばらしい参考ブログ:http://www.yomotsu.net/wp/?p=597 12年10月7日日曜日
  • 18. light シーンの中に光を灯す照明です。 位置や明るさを変える事が出来ます。 12年10月7日日曜日
  • 19. mesh sceneに配置するオブジェクトです。 構造を表す 素材を表す geometory material mesh! + = 12年10月7日日曜日
  • 20. それでは実際に コーディングして みましょう! 12年10月7日日曜日
  • 21. htmlの作成 1. ライブラリを配置します。 <script type="text/javascript" src="js/Three.min.js" > </script> 2. divを用意します。 <div id="threeJsPane" > <!-- ☆ Three.jsがここに描画するよ☆ --> </div> 12年10月7日日曜日
  • 22. sceneの書き方 下のように描けば3D空間が生成されます。 var scene = new THREE.Scene(); 12年10月7日日曜日
  • 23. lightの書き方 光の色と強さを指定してlightオブジェクトを作ります。 var light = new THREE.PointLight( 色, 強さ ); 光源の位置を指定します。 light.position.set( x座標, y座標, z座標 ); シーンに加えます。 scene.add(this.light); 12年10月7日日曜日
  • 24. lightの種類 実は、4種類あるみたいですけど 今回のデモは、なんとなく点光源を選んでます。 環境光 THREE.AmbientLight 平行光源 (無限遠光源) THREE.DirectionalLight 点光源 THREE.PointLight スポットライト THREE.SpotLight 12年10月7日日曜日
  • 25. cameraの書き方 色々指定してcameraオブジェクトを作ります。 var camera = new THREE.PerspectiveCamera( 画角,縦 横比, クリッピング手前, クリッピング奥 ); カメラの座標を指定します camera.position.set( X座標, Y座標, Z座標 ); 12年10月7日日曜日
  • 26. cameraの書き方 カメラの頭の向きを決めます。 どれかを1にしてその他を0にします。 camera.up.set ( up_x, up_y, up_z ); カメラが見つめる座標を指定します。 camera.lookAt( { x:0 , y:0 , z:0 }); 12年10月7日日曜日
  • 27. rendererの書き方 レンダラーオブジェクトを生成します。 var renderer = new THREE.WebGLRenderer({antialias:true}); レンダラーが描く絵の横・縦幅を指定します。 ※div要素と同じで良いと思います。 renderer.setSize( 横幅 , 縦幅 ); レンダラーが描く絵の背景の色を指定します。 renderer.setClearColorHex( 色 , 透明度 ); 描画先のdiv要素に追加して完成です! $(div要素).append( $(renderer.domElement) ); 12年10月7日日曜日
  • 28. rendererの描き方 レンダラーの描画は以下のようにループさせます。 var animationLoop = function(){ // ☆描画!! renderer.render( scene, camera ); requestAnimationFrame( animationLoop ); } animationLoop(); 12年10月7日日曜日
  • 29. rendererの動かし方 requestAnimationFrameって何?? setIntervalでも出来るのですけど ブラウザが裏に回っている時は、 動作しない為、こちらを使った方が 負荷が軽そうです。 ※1秒間に60回描画するみたいです。 参考URL http://d.hatena.ne.jp/calpo/20110523/p1 12年10月7日日曜日
  • 30. ここまでを 動かしてみましょう。 デモURL:http://www.itokami1123.com/Three/20121005/ 12年10月7日日曜日
  • 31. なにも出ません! なんも物を置いてないからです。 12年10月7日日曜日
  • 32. meshの書き方 箱 箱の構造を作成します。 var gemetry = new THREE.CubeGeometry( 幅, 高さ, 奥行き ); つづいて箱の表面の素材を作ります。 (下の例は光を反射する素材です) var material = new THREE.MeshLambertMaterial({ color: 色 }); 12年10月7日日曜日
  • 33. meshの書き方 箱 合体すると箱メッシュになります。 var box = new THREE.Mesh( gemetry, material ); 箱の座標を指定します。 box.position.set( x, y, z ); シーンに箱を登場させます。 this.scene.add(this.box ); どんな箱が出来るか確認してみましょう。 デモURL:http://www.itokami1123.com/Three/20121005/ BOX_OFFボタンを押す 12年10月7日日曜日
  • 34. meshの書き方 板 地面が無いと寂しいので板を作って地面にしましょう。 板の構造を生成 var geometry = new THREE.PlaneGeometry(幅,高さ); 地面の表面に今回は 画像(jpeg)を使ってみます。 var material = new THREE.MeshBasicMaterial({ map:THREE.ImageUtils.loadTexture('xxxx.jpg') }); 12年10月7日日曜日
  • 35. meshの書き方 板 合体して地面の出来上がり var floor = new THREE.Mesh( geometry, material ); シーンに登場させましょう scene.add( floor ); デモURL:http://www.itokami1123.com/Three/20121005/ FLOOR_OFFボタンを押す 12年10月7日日曜日
  • 36. meshの書き方 モデルデータ blenderで描いたモデルデータを 変換してシーンに登場させることができます。 まず、blenderに設定が必要です。 ダウンロードしたライブラリの以下を mrdoob-three.js-ef5f05d/utils/exporters/blender/ 2.63/scripts/addons Blenderの中に貼付けます。 ./Contents/MacOS/2.63/scripts/addons ※2.63を使っています。 12年10月7日日曜日
  • 37. meshの書き方 モデルデータ blenderのデータは↓を使わせてもらいました。 ありがとうございます。 http://blog.romatica.com/tag/three-js/ 12年10月7日日曜日
  • 38. meshの書き方 モデルデータ File->Export->Three.jsで出力出来ます。 ※ 手順が悪いのか。。何故かoctcat2.pngが無いエラーが出ますので  octcat.pngをリネームして使いました。 12年10月7日日曜日
  • 39. meshの書き方 モデルデータ このデータを読み込むには JSONLoaderオブジェクトを生成します。 var loader = new THREE.JSONLoader(); データの取得元とロード後によばれる関数を用意します。 loader.load( "modelData.js", ロード後呼ばれる関数); 12年10月7日日曜日
  • 40. meshの書き方 モデルデータ ロード後に、よばれる関数を用意します。 var loadCallBack = function( geometry ){ // geometoryが引数でくるのがポイントです! var material = new THREE.MeshFaceMaterial(); var mesh = new THREE.Mesh(geometry,material); // モデルデータを配置すると小さい(大きい時)は // 以下で大きさを調整できます。 mesh.scale.set( x座標 , y座標 , z座標 ); 12年10月7日日曜日
  • 41. meshの書き方 モデルデータ ロード後よばれる関数を用意します。 var loadCallBack = function( geometry ){  ・・つづき・・ // 箱と同様に位置を設定します mash.position.set( 0, 0, 25 ); // シーンに登場させましょう! scene.add( mesh ); } それでは見てみましょう。 デモURL:http://www.itokami1123.com/Three/20121005/ OCTCAT_OFFボタンを押す 12年10月7日日曜日
  • 43. 最後まで聞いてくれて ありがとうございました! 12年10月7日日曜日

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n