1
+ <!DOCTYPE html>
2
+ < html lang ="en ">
3
+ < head >
4
+ < title > DeepView VR</ title >
5
+ < meta charset ="utf-8 ">
6
+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0, user-scalable=no ">
7
+ < style >
8
+ body {
9
+ font-family : Monospace;
10
+ background-color : # 808080 ;
11
+ color : # fff ;
12
+ margin : 0 ;
13
+ }
14
+ canvas {
15
+ display : block;
16
+ }
17
+
18
+ a {
19
+ color : # ff4 ;
20
+ }
21
+ # info {
22
+ position : absolute;
23
+ width : 100% ;
24
+ text-align : center;
25
+ margin-top : 10px ;
26
+ }
27
+ </ style >
28
+ </ head >
29
+ < body >
30
+ < div id ="info ">
31
+ Immersive Light Field< br />
32
+ < a href ="https://augmentedperception.github.io/deepviewvideo/ " target ="_blank "> SIGGRAPH 2020 Technical Paper</ a >
33
+ </ div >
34
+ < script type ="module ">
35
+
36
+ import * as THREE from 'https://cdn.jsdelivr.net/npm/three@0.117.1/build/three.module.js' ;
37
+ import { PLYLoader } from 'https://cdn.jsdelivr.net/npm/three@0.117.1/examples/jsm/loaders/PLYLoader.js' ;
38
+ import { OrbitControls } from 'https://cdn.jsdelivr.net/npm/three@0.117.1/examples/jsm/controls/OrbitControls.js' ;
39
+
40
+ const data = {
41
+ "baseUrl" : "https://cdn.glitch.com/e6e6edef-3278-4ba0-812c-44e4b4eebb73%2F" ,
42
+ //"baseUrl": "https://storage.googleapis.com/immersive-lf-video-siggraph2020/face-paint/msi/rgba_000.png",
43
+ "rgba" : "texture_atlas_rgba.png" ,
44
+ "layer0Mesh" : "mdi_rig_space_mesh_000.ply" ,
45
+ "numLayers" : 16 ,
46
+ "lutUrl" : "../lut.png" ,
47
+ "near" : 0.8 ,
48
+ "far" : 1000.0
49
+ } ;
50
+
51
+
52
+ let camera , scene , renderer ;
53
+
54
+ init ( ) ;
55
+ animate ( ) ;
56
+
57
+ function init ( ) {
58
+
59
+ renderer = new THREE . WebGLRenderer ( ) ;
60
+ renderer . setPixelRatio ( window . devicePixelRatio ) ;
61
+ renderer . setSize ( window . innerWidth , window . innerHeight ) ;
62
+ document . body . appendChild ( renderer . domElement ) ;
63
+
64
+ window . addEventListener ( 'resize' , onWindowResize , false ) ;
65
+
66
+ //
67
+
68
+ scene = new THREE . Scene ( ) ;
69
+ scene . background = new THREE . Color ( 0x808080 ) ;
70
+
71
+ camera = new THREE . PerspectiveCamera ( 70 , window . innerWidth / window . innerHeight , 0.1 , 100 ) ;
72
+ camera . position . set ( 0 , 1.6 , 0 ) ;
73
+
74
+ var controls = new OrbitControls ( camera , renderer . domElement ) ;
75
+ controls . rotateSpeed = 0.25 ;
76
+ controls . screenSpacePanning = true ;
77
+ controls . target . set ( 0 , 1.6 , - 1 ) ;
78
+ controls . update ( ) ; // grrr
79
+
80
+ window . addEventListener ( 'mousedown' , ( ) => {
81
+ console . log ( controls ) ;
82
+ } )
83
+
84
+ const texture = new THREE . TextureLoader ( )
85
+ . setPath ( data . baseUrl )
86
+ . load ( data . rgba ) ;
87
+ texture . flipY = false ;
88
+ texture . generateMipmaps = false ;
89
+ texture . wrapS = THREE . ClampToEdgeWrapping ;
90
+ texture . wrapT = THREE . ClampToEdgeWrapping ;
91
+ texture . minFilter = THREE . LinearFilter ;
92
+
93
+ const material = new THREE . MeshBasicMaterial ( { map : texture , transparent : true } ) ;
94
+
95
+ const loader = new PLYLoader ( ) ;
96
+ loader . setPath ( data . baseUrl ) ;
97
+
98
+ for ( let i = 0 ; i < data . numLayers ; i ++ ) {
99
+
100
+ const url = data . layer0Mesh . replace ( '000' , i . toString ( ) . padStart ( 3 , '0' ) ) ;
101
+
102
+ loader . load ( url , function ( geometry ) {
103
+
104
+ const mesh = new THREE . Mesh ( geometry , material ) ;
105
+ mesh . position . y = 1.6 ;
106
+ mesh . rotation . x = Math . PI ;
107
+ mesh . renderOrder = i ;
108
+ scene . add ( mesh ) ;
109
+
110
+ } ) ;
111
+
112
+ }
113
+
114
+ }
115
+
116
+ function onWindowResize ( ) {
117
+
118
+ camera . aspect = window . innerWidth / window . innerHeight ;
119
+ camera . updateProjectionMatrix ( ) ;
120
+
121
+ renderer . setSize ( window . innerWidth , window . innerHeight ) ;
122
+
123
+ }
124
+
125
+ //
126
+
127
+ function animate ( ) {
128
+
129
+ renderer . setAnimationLoop ( render ) ;
130
+
131
+ }
132
+
133
+ function render ( ) {
134
+
135
+ renderer . render ( scene , camera ) ;
136
+
137
+ }
138
+
139
+ </ script >
140
+ </ body >
141
+ </ html >
0 commit comments