Recommended
PPT
Presentación matriz ram general
PDF
DOCX
eyegaze communication system
PPTX
PPTX
OpenSIM 筋骨格シミュレーション Matlabとの連携設定
PDF
Maven Zero to Hero with AWS CodeCommit, CodeArtifact, ECR, OWASP Dependency ...
PDF
PDF
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
PDF
Plan de emergencias complejo sur
PDF
Singapore's Approach To Implementing The GHS of Classification & Labelling of...
PPTX
How to let them in house of quality
PPTX
Segruidad con pallet jack
PDF
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
PDF
PDF
PPTX
Métodos de evaluación de riesgos
PPTX
PPTX
PPT
PPTX
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
PDF
PDF
シェーダだけで世界を創る!three.jsによるレイマーチング
PDF
PDF
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
PPTX
3D で遊ぼう ~C#er も TypeScript で楽々 WebGL~
PDF
PDF
PDF
PDF
PDF
簡単!OpenGL ES 2.0フラグメントシェーダー
More Related Content
PPT
Presentación matriz ram general
PDF
DOCX
eyegaze communication system
PPTX
PPTX
OpenSIM 筋骨格シミュレーション Matlabとの連携設定
PDF
Maven Zero to Hero with AWS CodeCommit, CodeArtifact, ECR, OWASP Dependency ...
PDF
PDF
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
What's hot
PDF
Plan de emergencias complejo sur
PDF
Singapore's Approach To Implementing The GHS of Classification & Labelling of...
PPTX
How to let them in house of quality
PPTX
Segruidad con pallet jack
PDF
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
PDF
PDF
PPTX
Métodos de evaluación de riesgos
PPTX
PPTX
PPT
PPTX
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
Similar to Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
PDF
PDF
シェーダだけで世界を創る!three.jsによるレイマーチング
PDF
PDF
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
PPTX
3D で遊ぼう ~C#er も TypeScript で楽々 WebGL~
PDF
PDF
PDF
PDF
PDF
簡単!OpenGL ES 2.0フラグメントシェーダー
PPTX
PDF
PDF
ex-Workshop06『three.jsを使ってモデリングソフトを試作する』
PPTX
プログラミングで絵をかけるようになりたかった話(2025-03_hajimeteLT)
PDF
PPTX
Ember.js Tokyo event 2014/09/22 (Japanese)
PDF
WebGL (Three.js) Code Lab - Intro. [ GTUG Girls 10th]
PDF
Flashup 12 Basic Training of Away3D
PPTX
PDF
Wcan 2013 autumn_trident_mizuno
More from Atsushi Tadokoro
PDF
Media Art II openFrameworks 複数のシーンの管理・切替え
PDF
Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)
PDF
Interactive Music II ProcessingとSuperColliderの連携1
PDF
Interactive Music II Processingによるアニメーション
PDF
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
PDF
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
PDF
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1
PDF
PDF
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う
PDF
iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く
PDF
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
PDF
coma Creators session vol.2
PDF
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
PDF
PDF
Interactive Music II ProcessingとSuperColliderの連携 -2
PDF
Media Art II openFrameworks アプリ間の通信とタンジブルなインターフェイス
PDF
iTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画する
PDF
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
PDF
Interactive Music II Processing基本
PDF
Interactive Music II SuperCollider実習 オリジナルの楽器を作ろう!
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング 1. 2. 3. 4. 5. 6. 7. Three.jsとは
‣ WebGL (とCanvas) を使用して高度な3D表現を可能とする、
Javascriptのライブラリ
‣ MITライセンスの、オープンソースプロジェクト
‣ Mr. Doobを中心に多くのコラボレーターと共に開発が現在も進
行中
!
‣ ※ MITライセンス - ソフトウェアライセンスのひとつ
‣ ソフトウェアを誰でも無償で無制限に扱って良い。ただし、著
作権表示および本許諾表示をソフトウェアのすべての複製また
は重要な部分に記載しなければならない。
‣ 作者または著作権者は、ソフトウェアに関してなんら責任を負
わない。
8. 9. 10. 11. 12. 13. 14. 15. 16. Three.jsを使ってみる
‣ テンプレートには描画するコンテナの設定とWebGLのレンダラーの追加が行われている
//画面設定
var b = document.body;
var d = document.documentElement;
var WIDTH = Math.max(b.clientWidth , b.scrollWidth, d.scrollWidth,
d.clientWidth);
var HEIGHT = Math.max(b.clientHeight , b.scrollHeight, d.scrollHeight,
d.clientHeight);
!
//コンテナとレンダラーの配置
var $container = $('#container');
var renderer = new THREE.WebGLRenderer();
renderer.setSize(WIDTH, HEIGHT);
$container.append(renderer.domElement);
17. 18. Three.jsを使ってみる
‣ 次に、カメラとライトの配置
!
// カメラ配置
var camera = new THREE.PerspectiveCamera(45, WIDTH/HEIGHT, 1, 1000);
camera.position.z = 300;
!
// ライト配置
var light
= new
light.position.x =
light.position.y =
light.position.z =
scene.add(light);
THREE.DirectionalLight(0xffffff, 1.5);
0.5;
0.5;
1;
19. 20. 21. 22. 23. 24. 25. Three.jsを使ってみる
‣ メッシュの回転とシーンの追加、レンダリングの部分を変更
// メッシュ生成
var mesh = new THREE.Mesh(geometry, material);
// メッシュをシーンに追加
scene.add(mesh);
!
// マウスの位置でメッシュを回転
renderer.domElement.addEventListener('mousemove', function(e) {
mesh.rotation.x = e.pageY/ 100.0;
mesh.rotation.y = e.pageX/ 100.0;
!
//シーンを描画する
renderer.render(scene, camera);
}, false);
26. 27. 28. Three.jsを使ってみる
‣ マテリアルの設定に、テクスチャを追加
// 立方体のジオメトリとマテリアル設定
var geometry = new THREE.CubeGeometry(100, 100, 100);
// テクスチャを読み込み
var texture
= new THREE.ImageUtils.loadTexture('http://jsrun.it/assets/6/Q/A/m/
6QAmH.jpg3');
// テクスチャを反映
var material = new THREE.MeshLambertMaterial({map: texture});
// メッシュ生成
var mesh = new THREE.Mesh(geometry, material);
// メッシュをシーンに追加
scene.add(mesh);
29. 30. 31. 32. 前回の復習
‣ Javascriptコード
//立方体の表示: 基本
!
//画面設定
var b = document.body;
var d = document.documentElement;
var WIDTH = Math.max(b.clientWidth , b.scrollWidth, d.scrollWidth,
d.clientWidth);
var HEIGHT = Math.max(b.clientHeight , b.scrollHeight, d.scrollHeight,
d.clientHeight);
!
//コンテナとレンダラーの配置
var $container = $('#container');
var renderer = new THREE.WebGLRenderer();
renderer.setSize(WIDTH, HEIGHT);
$container.append(renderer.domElement);
!
//立方体ジオメトリ
var geometry = new THREE.CubeGeometry(100, 100, 100);
//マテリアル
var material = new THREE.MeshLambertMaterial({color: 0x3366cc});
//メッシュの生成
var mesh = new THREE.Mesh(geometry, material);
33. 前回の復習
‣ Javascriptコード
//メッシュの回転
mesh.rotation = {x: 0.5, y: 0.5, z: 0.0};
!
//カメラを配置
var camera = new THREE.PerspectiveCamera(40, WIDTH / HEIGHT, 1, 1000);
camera.position.z = 400;
camera.lookAt(mesh.position);
!
//シーンを生成し、メッシュ追加
var scene = new THREE.Scene();
scene.add(mesh);
!
//ライト追加
var light = new THREE.DirectionalLight(0xffffff, 1.5);
light.position = {x: 0, y: 0.2, z: 1}
scene.add(light);
!
//レンダリング
renderer.render(scene, camera);
34. 35. 36. 37. 38. 39. Three.jsを使用したアニメーション
‣ Javascript
//画面設定
var b = document.body;
var d = document.documentElement;
var WIDTH = Math.max(b.clientWidth , b.scrollWidth, d.scrollWidth,
d.clientWidth);
var HEIGHT = Math.max(b.clientHeight , b.scrollHeight, d.scrollHeight,
d.clientHeight);
!
//Three.jsのシーンに関係するグローバルな変数
var mesh, scene, camera, renderer, light;
!
//プログラム構造
init();
animate();
!
function init() {
!
//コンテナとレンダラーの配置
var $container = $('#container');
renderer = new THREE.WebGLRenderer();
renderer.setSize(WIDTH, HEIGHT);
$container.append(renderer.domElement);
40. Three.jsを使用したアニメーション
‣ Javascript
//立方体ジオメトリ
var geometry = new THREE.CubeGeometry(100, 100, 100);
//マテリアル
!
var material = new THREE.MeshLambertMaterial({color: 0x3366cc});
//ジオメトリとマテリアルから、メッシュの生成
mesh = new THREE.Mesh(geometry, material);
mesh.rotation.x += 20 / 180.0 * Math.PI;
//カメラを配置
camera = new THREE.PerspectiveCamera(40, WIDTH / HEIGHT, 1, 1000);
camera.position.z = 400;
camera.lookAt(mesh.position);
//シーンを生成し、メッシュ追加
scene
= new THREE.Scene();
scene.add(mesh);
//ライト追加
light
= new THREE.DirectionalLight(0xffffff, 1.5);
light.position = {x: 0, y: 0.2, z: 1}
scene.add(light);
}
41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 応用:たくさんの図形をアニメーション
‣ Javascript
//画面設定
var b = document.body;
var d = document.documentElement;
var WIDTH = Math.max(b.clientWidth , b.scrollWidth, d.scrollWidth,
d.clientWidth);
var HEIGHT = Math.max(b.clientHeight , b.scrollHeight, d.scrollHeight,
d.clientHeight);
!
//Three.jsのシーンに関係するグローバルな変数
var
var
var
var
var
var
!
scene, camera, renderer, light;
mouseX = 0, mouseY = 0;
windowHalfX = window.innerWidth / 2;
windowHalfY = window.innerHeight / 2;
mesh = [];
NUM = 100;
//プログラム構造
init();
animate();
!
function init() {
!
//コンテナとレンダラーの配置
var $container = $('#container');
52. 応用:たくさんの図形をアニメーション
‣ Javascript
//立方体ジオメトリ
var geometry = new THREE.CubeGeometry(100, 100, 100);
//マテリアル
var material = new THREE.MeshLambertMaterial({color: 0x3366cc});
//くりかえし
for(var i = 0; i < NUM; i++){
//ジオメトリとマテリアルから、メッシュの生成
mesh[i] = new THREE.Mesh(geometry, material);
mesh[i].rotation.x += i / 180.0 * Math.PI;
scene.add(mesh[i]);
}
//カメラを配置
camera = new THREE.PerspectiveCamera(40, WIDTH / HEIGHT, 1, 1000);
camera.position.z = 400;
camera.lookAt(mesh[0].position);
//ライト追加
light
= new THREE.DirectionalLight(0xffffff, 1.5);
light.position = {x: 0, y: 0.2, z: 1}
scene.add(light);
53. 応用:たくさんの図形をアニメーション
‣ Javascript
//アニメーション
function animate() {
//くりかえし
for(var i = 0; i < NUM; i++){
mesh[i].rotation.y += i / 18000.0 * Math.PI;
mesh[i].scale.x = 0.8 * Math.sin( i * Date.now() / 20000.0) + 1.0;
mesh[i].scale.y = 0.8 * Math.cos( i * Date.now() / 30000.0) + 1.0;
}
requestAnimationFrame( animate );
render();
}
!
//レンダリング
function render() {
!
//カメラの視点をマウスで移動
camera.position.x += ( mouseX - camera.position.x );
camera.position.y += ( - mouseY - camera.position.y );
camera.lookAt(mesh[0].position);
//レンダリング
renderer.render(scene, camera);
}
54. 55.