|
18 | 18 | <script type="module"> |
19 | 19 | import { |
20 | 20 | BoxBufferGeometry, |
| 21 | + CylinderBufferGeometry, |
21 | 22 | Color, |
22 | 23 | DirectionalLight, |
23 | 24 | GridHelper, |
24 | 25 | HemisphereLight, |
25 | 26 | IcosahedronBufferGeometry, |
26 | 27 | Mesh, |
27 | | - MeshBasicMaterial, |
28 | 28 | MeshStandardMaterial, |
29 | 29 | PerspectiveCamera, |
30 | 30 | PlaneBufferGeometry, |
31 | 31 | Scene, |
32 | | - TextureLoader, |
33 | 32 | Vector3, |
34 | 33 | WebGLRenderer |
35 | 34 | } from "../build/three.module.js"; |
36 | 35 |
|
37 | | - import { OBJLoader } from './jsm/loaders/OBJLoader.js'; |
38 | 36 | import { MarchingCubes } from './jsm/objects/MarchingCubes.js'; |
39 | 37 |
|
40 | 38 | var container; |
|
57 | 55 | scene = new Scene(); |
58 | 56 | scene.background = new Color( 0x222222 ); |
59 | 57 |
|
60 | | - camera = new PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 0.01, 50 ); |
| 58 | + camera = new PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 0.02, 50 ); |
61 | 59 |
|
62 | 60 | var geometry = new BoxBufferGeometry( 0.5, 0.8, 0.5 ); |
63 | 61 | var material = new MeshStandardMaterial( { |
|
68 | 66 | var table = new Mesh( geometry, material ); |
69 | 67 | table.position.y = 0.35; |
70 | 68 | table.position.z = 0.85; |
71 | | - table.castShadow = true; |
72 | | - table.receiveShadow = true; |
73 | 69 | scene.add( table ); |
74 | 70 |
|
75 | 71 | var geometry = new PlaneBufferGeometry( 4, 4 ); |
|
80 | 76 | } ); |
81 | 77 | var floor = new Mesh( geometry, material ); |
82 | 78 | floor.rotation.x = - Math.PI / 2; |
83 | | - floor.receiveShadow = true; |
84 | 79 | scene.add( floor ); |
85 | 80 |
|
86 | | - scene.add( new GridHelper( 20, 40, 0x111111, 0x111111 ) ); |
| 81 | + var grid = new GridHelper( 10, 20, 0x111111, 0x111111 ); |
| 82 | + grid.material.depthTest = false; // avoid z-fighting |
| 83 | + scene.add( grid ); |
87 | 84 |
|
88 | 85 | scene.add( new HemisphereLight( 0x888877, 0x777788 ) ); |
89 | 86 |
|
90 | 87 | var light = new DirectionalLight( 0xffffff ); |
91 | 88 | light.position.set( 0, 6, 0 ); |
92 | | - light.castShadow = true; |
93 | | - light.shadow.camera.top = 2; |
94 | | - light.shadow.camera.bottom = - 2; |
95 | | - light.shadow.camera.right = 2; |
96 | | - light.shadow.camera.left = - 2; |
97 | | - light.shadow.mapSize.set( 4096, 4096 ); |
98 | | - |
99 | 89 | scene.add( light ); |
100 | 90 |
|
101 | | - // scene.add( new DirectionalLightHelper( light ) ); |
102 | | - // scene.add( new CameraHelper( light.shadow.camera ) ); |
103 | | - |
104 | 91 | // |
105 | 92 |
|
106 | 93 | renderer = new WebGLRenderer( { antialias: true } ); |
107 | 94 | renderer.setPixelRatio( window.devicePixelRatio ); |
108 | 95 | renderer.setSize( window.innerWidth, window.innerHeight ); |
109 | 96 | renderer.gammaInput = true; |
110 | 97 | renderer.gammaOutput = true; |
111 | | - renderer.shadowMap.enabled = true; |
112 | 98 | renderer.vr.enabled = true; |
113 | 99 | container.appendChild( renderer.domElement ); |
114 | 100 |
|
|
140 | 126 | controller2.userData.id = 1; |
141 | 127 | scene.add( controller2 ); |
142 | 128 |
|
143 | | - var loader = new OBJLoader(); |
144 | | - loader.setPath( 'models/obj/vive-controller/' ); |
145 | | - loader.load( 'vr_controller_vive_1_5.obj', function ( object ) { |
146 | | - |
147 | | - var loader = new TextureLoader(); |
148 | | - loader.setPath( 'models/obj/vive-controller/' ); |
149 | | - |
150 | | - var controller = object.children[ 0 ]; |
151 | | - controller.material.map = loader.load( 'onepointfive_texture.png' ); |
152 | | - controller.material.specularMap = loader.load( 'onepointfive_spec.png' ); |
153 | | - controller.castShadow = true; |
154 | | - controller.receiveShadow = true; |
155 | | - |
156 | | - // var pivot = new Mesh( new BoxBufferGeometry( 0.01, 0.01, 0.01 ) ); |
157 | | - var pivot = new Mesh( new IcosahedronBufferGeometry( 0.002, 2 ), blob.material ); |
158 | | - pivot.name = 'pivot'; |
159 | | - pivot.position.y = - 0.016; |
160 | | - pivot.position.z = - 0.043; |
161 | | - pivot.rotation.x = Math.PI / 5.5; |
162 | | - controller.add( pivot ); |
163 | | - |
164 | | - var range = new Mesh( new IcosahedronBufferGeometry( 0.03, 3 ), new MeshBasicMaterial( { opacity: 0.25, transparent: true } ) ); |
165 | | - pivot.add( range ); |
| 129 | + // |
166 | 130 |
|
167 | | - controller1.add( controller.clone() ); |
168 | | - controller2.add( controller.clone() ); |
| 131 | + var geometry = new CylinderBufferGeometry( 0.01, 0.02, 0.08, 5 ); |
| 132 | + geometry.rotateX( - Math.PI / 2 ); |
| 133 | + var material = new MeshStandardMaterial( { flatShading: true } ); |
| 134 | + var mesh = new Mesh( geometry, material ); |
169 | 135 |
|
170 | | - } ); |
| 136 | + var pivot = new Mesh( new IcosahedronBufferGeometry( 0.01, 2 ) ); |
| 137 | + pivot.name = 'pivot'; |
| 138 | + pivot.position.z = - 0.05; |
| 139 | + mesh.add( pivot ); |
171 | 140 |
|
| 141 | + controller1.add( mesh.clone() ); |
| 142 | + controller2.add( mesh.clone() ); |
172 | 143 |
|
173 | 144 | // |
174 | 145 |
|
|
194 | 165 | color: 0xffffff, |
195 | 166 | // envMap: reflectionCube, |
196 | 167 | roughness: 0.9, |
197 | | - metalness: 0.0 |
| 168 | + metalness: 0.0, |
| 169 | + transparent: true |
198 | 170 | } ); |
199 | 171 |
|
200 | 172 | blob = new MarchingCubes( 64, material ); |
|
0 commit comments