質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Three.js

Three.jsはWebGLをサポートしているJavaScriptの3D描画用ライブラリです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

230閲覧

Three.jsで3D年賀状を動作させたい

退会済みユーザー

退会済みユーザー

総合スコア0

Three.js

Three.jsはWebGLをサポートしているJavaScriptの3D描画用ライブラリです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/08/14 23:14

Three.jsで3D年賀状を作成したいです。
以下( http://coderecipe.jp/recipe/7PrRS8IMRb/ )の通りコードをコピペしたのですが動作させることが出来ません。何故でしょうか?

HTML

1<!DOCTYPE html> 2<meta charset="utf-8"> 3<title>Happy New Year 2015</title> 4<!-- three.min.js --> 5<script src="http://threejs.org/build/three.min.js"></script> 6<script src="index.js"></script>

JavaScript

1// Jumping Sheep by cx20 2// http://kyucon.com/qblock/#/63138 3// 4var dataSet = [ 5 [ 6 ... 7 ], 8 [ 9 "×","×","×","×","×","×","×","×","×","×","×","×","×","×","×","×", 10 "×","×","×","×","×","×","×","×","×","×","×","×","×","×","×","×", 11 "×","×","×","×","×","×","×","×","×","×","×","×","×","×","×","×", 12 "×","×","×","×","×","×","×","×","×","×","×","×","×","×","×","×", 13 "×","×","×","×","×","×","×","×","×","×","×","×","×","×","×","×", 14 "×","×","×","×","×","×","×","×","×","×","×","×","×","×","×","×", 15 "×","×","×","×","×","×","×","×","×","×","×","×","×","×","×","×", 16 "×","×","×","×","×","×","×","×","×","×","×","×","×","×","×","×", 17 "×","×","×","×","×","×","×","×","×","×","×","×","×","×","×","×", 18 "×","赤","赤","赤","×","赤","赤","赤","×","赤","×","赤","赤","赤","×","×", 19 "×","赤","×","赤","×","赤","×","赤","×","赤","×","赤","×","×","×","×", 20 "×","×","×","赤","×","赤","×","赤","×","赤","×","赤","赤","赤","×","×", 21 "×","×","赤","×","×","赤","×","赤","×","赤","×","×","×","赤","×","×", 22 "×","赤","赤","赤","×","赤","赤","赤","×","赤","×","赤","赤","赤","×","×", 23 "×","×","×","×","×","×","×","×","×","×","×","×","×","×","×","×", 24 "×","×","×","×","×","×","×","×","×","×","×","×","×","×","×","×", 25 "×","×","×","×","×","×","×","×","×","×","×","×","×","×","×","×" 26 ] 27]; 28 29 30function init() { 31 container = document.createElement('div'); 32 document.body.appendChild(container); 33 34 // カメラを作成する 35 camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 1000); 36 camera.position.x = 0; 37 camera.position.y = 0; 38 camera.position.z = 500; 39 40 // シーンを作成する 41 scene = new THREE.Scene(); 42 43 // 立体ドット絵を作成する 44 group = createSheep(); 45 46 // シーンに立体ドット絵を追加する 47 scene.add(group); 48 49 // ライトを作成する 50 var light = new THREE.DirectionalLight(0xffffff); 51 light.position.set(0, 0, 10).normalize(); 52 scene.add(light); 53 54 // レンダラーを作成する 55 renderer = new THREE.WebGLRenderer(); 56 57 // 背景色を指定する(空色に変更する) 58 renderer.setClearColor(0x4584b4); 59 60 // レンダラーのサイズを指定する 61 renderer.setSize(window.innerWidth, window.innerHeight); 62 63 // HTML との紐づけを行う 64 container.appendChild(renderer.domElement); 65} 66 67function createSheep() { 68 // 立体ドット絵をグループ化して返却する 69 var group = new THREE.Object3D(); 70 71 // 箱を用意する 72 var geometry = new THREE.BoxGeometry(DOT_SIZE * 0.9, DOT_SIZE * 0.9, DOT_SIZE * 0.9); 73 74 // ドット絵の枚数ぶんループする 75 for (var j = 0; j < dataSet.length; j++) { 76 77 // ドット絵1枚のドット数ぶんループする 78 for (var i = 0; i < dataSet[j].length; i++) { 79 80 // ドット絵の表示座標を計算する 81 var x = (i % 16) * DOT_SIZE + X_START_POS; 82 var y = (16 - Math.floor(i / 16)) * DOT_SIZE + Y_START_POS; 83 var z = j * DOT_SIZE + Z_START_POS; 84 85 // ドット絵の色を取得する("赤"→"#ff0000"に変換する) 86 var color = getRgbColor(dataSet[j][i]); 87 88 // ドットが "×" でなければ 89 if (dataSet[j][i] != "×") { 90 // 色を指定する 91 var material = new THREE.MeshLambertMaterial({color: color}); 92 93 // 箱に色をつける 94 var mesh = new THREE.Mesh(geometry, material); 95 96 // 箱の位置を指定する 97 mesh.position.x = x; 98 mesh.position.y = y; 99 mesh.position.z = z; 100 101 // グループ化する 102 group.add(mesh); 103 } 104 } 105 } 106 107 // 立体ドット絵を返却する 108 return group; 109} 110 111function render() { 112 // 立体ドット絵をY軸に回転させる 113 group.rotation.y += Math.PI / 180; 114 115 // 表示を更新する 116 renderer.render(scene, camera); 117}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

コピペする時に関数やグローバル変数、関数の呼び出しなどいくつか漏れがあるようです。

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Happy New Year 2015</title> <style type="text/css">* { margin: 0; padding: 0; border: 0; overflow: hidden; } </style> </head> <body> <!-- three.min.js --> <script src="http://threejs.org/build/three.min.js"></script> <script src="index.js"></script> </body> </html>
var container; var camera, scene, renderer; var group; var DOT_SIZE = 20; var X_START_POS = -8 * DOT_SIZE; var Y_START_POS = -8 * DOT_SIZE; var Z_START_POS = -4.5 * DOT_SIZE; // Jumping Sheep by cx20 // http://kyucon.com/qblock/#/63138 // var dataSet = [ //省略 ]; function getRgbColor( c ) { var colorHash = { "×":"#000000", "黒":"#000000", "灰":"#808080", "白":"#ffffff", "肌":"#ffcccc", "茶":"#800000", "赤":"#ff0000", "黄":"#ffff00", "緑":"#00ff00", "水":"#00ffff", "青":"#0000ff", "紫":"#800080" }; return colorHash[ c ]; } init(); animate(); function init() { container = document.createElement('div'); document.body.appendChild(container); // カメラを作成する camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 1000); camera.position.x = 0; camera.position.y = 0; camera.position.z = 500; // シーンを作成する scene = new THREE.Scene(); // 立体ドット絵を作成する group = createSheep(); // シーンに立体ドット絵を追加する scene.add(group); // ライトを作成する var light = new THREE.DirectionalLight(0xffffff); light.position.set(0, 0, 10).normalize(); scene.add(light); // レンダラーを作成する renderer = new THREE.WebGLRenderer(); // 背景色を指定する(空色に変更する) renderer.setClearColor(0x4584b4); // レンダラーのサイズを指定する renderer.setSize(window.innerWidth, window.innerHeight); // HTML との紐づけを行う container.appendChild(renderer.domElement); } function createSheep() { // 立体ドット絵をグループ化して返却する var group = new THREE.Object3D(); // 箱を用意する var geometry = new THREE.BoxGeometry(DOT_SIZE * 0.9, DOT_SIZE * 0.9, DOT_SIZE * 0.9); // ドット絵の枚数ぶんループする for (var j = 0; j < dataSet.length; j++) { // ドット絵1枚のドット数ぶんループする for (var i = 0; i < dataSet[j].length; i++) { // ドット絵の表示座標を計算する var x = (i % 16) * DOT_SIZE + X_START_POS; var y = (16 - Math.floor(i / 16)) * DOT_SIZE + Y_START_POS; var z = j * DOT_SIZE + Z_START_POS; // ドット絵の色を取得する("赤"→"#ff0000"に変換する) var color = getRgbColor(dataSet[j][i]); // ドットが "×" でなければ if (dataSet[j][i] != "×") { // 色を指定する var material = new THREE.MeshLambertMaterial({color: color}); // 箱に色をつける var mesh = new THREE.Mesh(geometry, material); // 箱の位置を指定する mesh.position.x = x; mesh.position.y = y; mesh.position.z = z; // グループ化する group.add(mesh); } } } // 立体ドット絵を返却する return group; } function animate() { requestAnimationFrame(animate); render(); } function render() { // 立体ドット絵をY軸に回転させる group.rotation.y += Math.PI / 180; // 表示を更新する renderer.render(scene, camera); }

投稿2017/08/14 23:54

編集2017/08/15 00:06
Kapustin

総合スコア1186

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/08/15 07:48

ありがとうございます!動かすことが出来ました。とても嬉しいです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問