three.jsの勉強をした時に作ったサンプルその2
HTML
1
<div id="stage"></div>
JavaScript
x
1
(function(){
2
'use strict';
3
4
var scene;
5
var object_cube;
6
var light_ambient , light_direction;
7
var camera;
8
var renderer;
9
var width = 600; // 全画面にしたい場合:window.innerWidth;
10
var height = 400; // 全画面にしたい場合:window.innerHeight;
11
12
init();
13
animate();
14
15
function init() {
16
// scene ---------------------------------------------------
17
// シーンに対してオブジェクト、ライト、カメラを配置する。
18
scene = new THREE.Scene();
19
20
// scene.fog : 霧効果・・・奥に行くほど霧がかって映る
21
// scene.fog = new THREE.Fog(0x990000, 1000,2000);
22
23
24
// object -----------------------------------------------
25
// THREE.Mesh : ポリゴンメッシュオブジェクトを生成
26
// new THREE.Mesh(Geometry:形,Material:素材)
27
object_cube = new THREE.Mesh(
28
new THREE.BoxGeometry(50, 50, 50), //
29
new THREE.MeshLambertMaterial({color: 0x00a0e8})
30
);
31
object_cube.position.set(0,0,0);
32
scene.add(object_cube);
33
34
// light -----------------------------------------------
35
36
// 環境光 ************
37
// THREE.AmbientLight : 環境光・・・オブジェクトの全ての面を均等に照らすライト。影が出来ない。
38
// new THREE.AmbientLight(光の色,光の強さ[省略可])
39
light_ambient = new THREE.AmbientLight( 0xffffff , 1 );
40
scene.add(light_ambient);
41
42
// 平行光源 ************
43
// THREE.DirectionalLight : 平行光源・・・特定の方向へのライト。影が出来る。
44
// new THREE.DirectionalLight(光の色,光の強さ[省略可])
45
light_direction = new THREE.DirectionalLight( 0xffffff, 1 );
46
// DirectionalLightの位置
47
light_direction.position.set( 50, 10, 5);
48
// DirectionalLightの対象オブジェクト
49
light_direction.target = object_cube;
50
scene.add(light_direction);
51
52
// camera --------------------------------------------------
53
camera = new THREE.PerspectiveCamera(45, width/height, 1, 1000);
54
camera.position.set(200,100,300);
55
camera.lookAt(scene.position);
56
57
// renderer ------------------------------------------------
58
renderer = new THREE.WebGLRenderer({antialias: true});
59
renderer.setSize(width,height);
60
renderer.setClearColor(0xefefef);
61
renderer.setPixelRatio(window.devicePixelRatio);
62
document.getElementById("stage").appendChild(renderer.domElement);
63
renderer.render(scene, camera);
64
}
65
66
function animate() {
67
// window.requestAnimationFrame:再描画のタイミングで指定した関数が呼び出される
68
// https://developer.mozilla.org/ja/docs/Web/API/Window/requestAnimationFrame
69
requestAnimationFrame( animate );
70
render();
71
}
72
73
function render() {
74
75
object_cube.rotation.x += 0.01; // x軸方向に回転
76
object_cube.rotation.y += 0.01; // y軸方向に回転
77
object_cube.rotation.z += 0.01; // z軸方向に回転
78
79
console.log("object_cube.rotation : " , object_cube.rotation);
80
81
// 再描画
82
renderer.render(scene, camera);
83
84
}
85
86
})();