Tech Tips

  1. プログラミング
  2. 2975 view

[Javascript][Three.js]マウス操作

前回の記事のindex.htmlに新規部分を追加した以下のmain.jsを読みこませる。
main.js
1
2
3
4
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
window.onload = function() {
        // Canvas size
        var width = 640;
        var height = 480;
 
        // Cube Size
        var geometry = new THREE.CubeGeometry(100, 100, 100);
        // Cube Material Info(not metal)
        var texture = new THREE.ImageUtils.loadTexture('./img/tex.jpg');
        var material = new THREE.MeshLambertMaterial({map: texture});
        // Create Cube
        var mesh = new THREE.Mesh(geometry, material);
        // Rotate Cube
        mesh.rotation = {x: 0.5, y: 0.5, z: 0.0};
 
        // Setting Camera
        var camera = new THREE.PerspectiveCamera(40, width / height, 1, 1000);
        // Camera Position
        camera.position.z = -400;
        // Camera Angle
        camera.lookAt(mesh.position);
 
        // Create Space
        var scene = new THREE.Scene();
        // Add cube to Space
        scene.add(mesh);
 
        // Create Light element
        var light    = new THREE.DirectionalLight(0xffffff, 1.5);
        // Light element position
        light.position = {x: 0, y: 0.2, z: -1};
        // Add light element to the space
        scene.add(light);
 
        // Create renderer
        var renderer = new THREE.WebGLRenderer();
        // Set canvas size
        renderer.setSize(width, height);
 
        // Set canvas to div element
        document.getElementById('canvas').appendChild(renderer.domElement);
 
        var mousedown = false;
        renderer.domElement.addEventListener('mousedown', function(e) {
                mousedown = true;
                prevPosition = {x: e.pageX, y: e.pageY};
        }, false);
 
        renderer.domElement.addEventListener('mousemove', function(e) {
                if (!mousedown) return;
                moveDistance = {x: prevPosition.x - e.pageX, y: prevPosition.y - e.pageY};
                mesh.rotation.x += moveDistance.y * 0.01;
                mesh.rotation.y -= moveDistance.x * 0.01;
 
                prevPosition = {x: e.pageX, y: e.pageY};
                render();
        }, false);
 
        renderer.domElement.addEventListener('mouseup', function(e) {
                mousedown = false;
        }, false);
 
        function render(){
                renderer.render(scene, camera);
        }
}
結果は次のようになる。ドラッグで立方体が回転する。
Three.js面白いな。何か作ってみよう。

プログラミングの最近記事

  1. C# でオブジェクトの概要を Console.WriteLine で出力する方法

  2. コマンドで C# コンソールアプリケーションを作成する方法

  3. PubSubClient の便利さと注意点

  4. Java の環境構築方法メモ

  5. PlatformIO IDE for VSCode を使用して VSCode で Ardu…

関連記事

PAGE TOP