Browse Source

init scene app

Nikolay Suslov 7 years ago
parent
commit
f66b8390f7
64 changed files with 4031 additions and 1 deletions
  1. 18 0
      public/vr/assets.json
  2. BIN
      public/vr/assets/bg.jpg
  3. BIN
      public/vr/assets/checker.jpg
  4. BIN
      public/vr/assets/cloud10.png
  5. BIN
      public/vr/assets/floor.jpg
  6. BIN
      public/vr/assets/ico/pause.png
  7. BIN
      public/vr/assets/ico/play.png
  8. BIN
      public/vr/assets/ico/sound-off.png
  9. BIN
      public/vr/assets/ico/sound-on.png
  10. BIN
      public/vr/assets/images/planeDiffuse.png
  11. BIN
      public/vr/assets/mon/concrete1.png
  12. BIN
      public/vr/assets/mon/concrete_ground_fin1.png
  13. BIN
      public/vr/assets/mon/grass1_fin.png
  14. BIN
      public/vr/assets/mon/grass2_fin.png
  15. BIN
      public/vr/assets/mon/house_fin.png
  16. BIN
      public/vr/assets/mon/model.bin
  17. 1379 0
      public/vr/assets/mon/model.gltf
  18. 1379 0
      public/vr/assets/mon/model.gltf 2
  19. BIN
      public/vr/assets/mon/new_metal2.png
  20. BIN
      public/vr/assets/mon/new_metal_NRM1.png
  21. BIN
      public/vr/assets/mon/uv_bridge3.png
  22. BIN
      public/vr/assets/mon/wall_ground_fin.png
  23. 225 0
      public/vr/assets/plane.dae
  24. BIN
      public/vr/assets/sky1.jpg
  25. BIN
      public/vr/assets/sky3.jpg
  26. BIN
      public/vr/assets/skyes/sky1.jpg
  27. BIN
      public/vr/assets/skyes/sky2.jpg
  28. BIN
      public/vr/assets/skyes/sky3.jpg
  29. BIN
      public/vr/assets/sounds/footsteps.mp3
  30. BIN
      public/vr/assets/sounds/golos.mp3
  31. BIN
      public/vr/assets/textures/cube/nx.jpg
  32. BIN
      public/vr/assets/textures/cube/ny.jpg
  33. BIN
      public/vr/assets/textures/cube/nz.jpg
  34. BIN
      public/vr/assets/textures/cube/px.jpg
  35. BIN
      public/vr/assets/textures/cube/py.jpg
  36. BIN
      public/vr/assets/textures/cube/pz.jpg
  37. BIN
      public/vr/assets/textures/skybox/nx.jpg
  38. BIN
      public/vr/assets/textures/skybox/ny.jpg
  39. BIN
      public/vr/assets/textures/skybox/nz.jpg
  40. BIN
      public/vr/assets/textures/skybox/px.jpg
  41. BIN
      public/vr/assets/textures/skybox/py.jpg
  42. BIN
      public/vr/assets/textures/skybox/pz.jpg
  43. BIN
      public/vr/assets/textures/skybox2/nx.jpg
  44. BIN
      public/vr/assets/textures/skybox2/ny.jpg
  45. BIN
      public/vr/assets/textures/skybox2/nz.jpg
  46. BIN
      public/vr/assets/textures/skybox2/px.jpg
  47. BIN
      public/vr/assets/textures/skybox2/py.jpg
  48. BIN
      public/vr/assets/textures/skybox2/pz.jpg
  49. 8 0
      public/vr/index.vwf.config.yaml
  50. 36 0
      public/vr/index.vwf.yaml
  51. BIN
      public/vr/webimg.jpg
  52. 6 0
      public/webapps.json
  53. 33 1
      support/client/lib/vwf.js
  54. 29 0
      support/client/lib/vwf/model/aframe.js
  55. 226 0
      support/client/lib/vwf/model/aframe/addon/SkyShader.js
  56. 472 0
      support/client/lib/vwf/model/aframe/addon/aframe-gamepad-controls.js
  57. 0 0
      support/client/lib/vwf/model/aframe/addon/aframe-gamepad-controls.min.js
  58. 169 0
      support/client/lib/vwf/model/aframe/addon/monument-app.js
  59. 29 0
      support/client/lib/vwf/model/aframeComponent.js
  60. 1 0
      support/client/lib/vwf/view/aframe.js
  61. 6 0
      support/proxy/vwf.example.com/aframe/agltfmodel.vwf.yaml
  62. 5 0
      support/proxy/vwf.example.com/aframe/app-envmap-component.vwf.yaml
  63. 5 0
      support/proxy/vwf.example.com/aframe/app-skyshader-component.vwf.yaml
  64. 5 0
      support/proxy/vwf.example.com/aframe/app-sun-component.vwf.yaml

+ 18 - 0
public/vr/assets.json

@@ -0,0 +1,18 @@
+{
+    "bg":{
+        "tag": "img",
+        "src": "./assets/bg.jpg"
+    },
+    "sky":{
+        "tag": "img",
+        "src": "./assets/skyes/sky3.jpg"
+    },
+    "mon":{
+        "tag": "a-asset-item",
+        "src": "./assets/mon/model.gltf"
+    },
+     "bg2":{
+        "tag": "img",
+        "src": "./assets/checker.jpg"
+    }
+}

BIN
public/vr/assets/bg.jpg


BIN
public/vr/assets/checker.jpg


BIN
public/vr/assets/cloud10.png


BIN
public/vr/assets/floor.jpg


BIN
public/vr/assets/ico/pause.png


BIN
public/vr/assets/ico/play.png


BIN
public/vr/assets/ico/sound-off.png


BIN
public/vr/assets/ico/sound-on.png


BIN
public/vr/assets/images/planeDiffuse.png


BIN
public/vr/assets/mon/concrete1.png


BIN
public/vr/assets/mon/concrete_ground_fin1.png


BIN
public/vr/assets/mon/grass1_fin.png


BIN
public/vr/assets/mon/grass2_fin.png


BIN
public/vr/assets/mon/house_fin.png


BIN
public/vr/assets/mon/model.bin


+ 1379 - 0
public/vr/assets/mon/model.gltf

@@ -0,0 +1,1379 @@
+{
+    "accessors" : [
+        {
+            "bufferView" : 0, 
+            "componentType" : 5123, 
+            "count" : 3048, 
+            "max" : [
+                3047
+            ], 
+            "min" : [
+                0
+            ], 
+            "type" : "SCALAR"
+        }, 
+        {
+            "bufferView" : 1, 
+            "componentType" : 5126, 
+            "count" : 3048, 
+            "max" : [
+                2154.953125, 
+                179.5430450439453, 
+                561.7412109375
+            ], 
+            "min" : [
+                -1400.214111328125, 
+                -160.822509765625, 
+                361.06622314453125
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 2, 
+            "componentType" : 5126, 
+            "count" : 3048, 
+            "max" : [
+                0.9981797933578491, 
+                0.9999483227729797, 
+                0.9999634027481079
+            ], 
+            "min" : [
+                -0.9938223361968994, 
+                -0.999948263168335, 
+                -0.9999465942382812
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 3, 
+            "componentType" : 5126, 
+            "count" : 3048, 
+            "max" : [
+                0.9999992847442627, 
+                0.9997701644897461, 
+                0.9859136343002319, 
+                1.0
+            ], 
+            "min" : [
+                -0.9999990463256836, 
+                -0.9999999403953552, 
+                -0.9404096007347107, 
+                1.0
+            ], 
+            "type" : "VEC4"
+        }, 
+        {
+            "bufferView" : 4, 
+            "componentType" : 5126, 
+            "count" : 3048, 
+            "max" : [
+                0.9662460088729858, 
+                0.9568333253264427
+            ], 
+            "min" : [
+                0.020078659057617188, 
+                0.5387802720069885
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 5, 
+            "componentType" : 5126, 
+            "count" : 3048, 
+            "max" : [
+                0.9995005130767822, 
+                0.9974959492683411
+            ], 
+            "min" : [
+                0.0004994869232177734, 
+                0.0025040507316589355
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 6, 
+            "componentType" : 5121, 
+            "count" : 36, 
+            "max" : [
+                23
+            ], 
+            "min" : [
+                0
+            ], 
+            "type" : "SCALAR"
+        }, 
+        {
+            "bufferView" : 7, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                2409.689208984375, 
+                1394.183349609375, 
+                557.0067138671875
+            ], 
+            "min" : [
+                -1570.933349609375, 
+                -4428.9580078125, 
+                553.3555297851562
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 8, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                0.999969482421875, 
+                0.999969482421875, 
+                1.0
+            ], 
+            "min" : [
+                -0.9998779296875, 
+                -0.999969482421875, 
+                -1.0
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 9, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                0.9999991059303284, 
+                0.9999901652336121, 
+                1.428983580770149e-11, 
+                1.0
+            ], 
+            "min" : [
+                -1.0, 
+                -0.9998976588249207, 
+                -3.360277744945961e-08, 
+                1.0
+            ], 
+            "type" : "VEC4"
+        }, 
+        {
+            "bufferView" : 10, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                0.9143322706222534, 
+                2.674062967300415
+            ], 
+            "min" : [
+                -1.7761019468307495, 
+                0.03826010227203369
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 11, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                0.9995005130767822, 
+                0.9995004832744598
+            ], 
+            "min" : [
+                0.0004994869232177734, 
+                0.0004978179931640625
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 12, 
+            "componentType" : 5123, 
+            "count" : 408, 
+            "max" : [
+                319
+            ], 
+            "min" : [
+                0
+            ], 
+            "type" : "SCALAR"
+        }, 
+        {
+            "bufferView" : 13, 
+            "componentType" : 5126, 
+            "count" : 320, 
+            "max" : [
+                2076.62646484375, 
+                -2002.6561279296875, 
+                551.3213500976562
+            ], 
+            "min" : [
+                -51.38232421875, 
+                -4062.756591796875, 
+                407.06842041015625
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 14, 
+            "componentType" : 5126, 
+            "count" : 320, 
+            "max" : [
+                0.968828558921814, 
+                0.7209082245826721, 
+                0.9999973773956299
+            ], 
+            "min" : [
+                -0.9686529636383057, 
+                -0.24771618843078613, 
+                -0.9999973773956299
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 15, 
+            "componentType" : 5126, 
+            "count" : 320, 
+            "max" : [
+                0.6921502351760864, 
+                0.763036847114563, 
+                0.999813973903656, 
+                1.0
+            ], 
+            "min" : [
+                -1.0, 
+                -0.012638268060982227, 
+                -0.9999926090240479, 
+                1.0
+            ], 
+            "type" : "VEC4"
+        }, 
+        {
+            "bufferView" : 16, 
+            "componentType" : 5126, 
+            "count" : 320, 
+            "max" : [
+                0.9519938230514526, 
+                0.9484422206878662
+            ], 
+            "min" : [
+                0.05574312433600426, 
+                0.04845726490020752
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 17, 
+            "componentType" : 5126, 
+            "count" : 320, 
+            "max" : [
+                0.9995004534721375, 
+                0.9995004534721375
+            ], 
+            "min" : [
+                0.0004995465278625488, 
+                0.0004995465278625488
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 18, 
+            "componentType" : 5123, 
+            "count" : 732, 
+            "max" : [
+                265
+            ], 
+            "min" : [
+                0
+            ], 
+            "type" : "SCALAR"
+        }, 
+        {
+            "bufferView" : 19, 
+            "componentType" : 5126, 
+            "count" : 266, 
+            "max" : [
+                2215.679931640625, 
+                1222.02392578125, 
+                553.511474609375
+            ], 
+            "min" : [
+                -1361.7548828125, 
+                -4034.57666015625, 
+                551.511474609375
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 20, 
+            "componentType" : 5126, 
+            "count" : 266, 
+            "max" : [
+                0.9969481229782104, 
+                0.999786376953125, 
+                1.0
+            ], 
+            "min" : [
+                -0.999969482421875, 
+                -0.999969482421875, 
+                -1.0
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 21, 
+            "componentType" : 5126, 
+            "count" : 266, 
+            "max" : [
+                1.0, 
+                0.0002075237425742671, 
+                2.1911339409541597e-09, 
+                1.0
+            ], 
+            "min" : [
+                -1.0, 
+                -0.0005310780834406614, 
+                -3.980125740099538e-08, 
+                1.0
+            ], 
+            "type" : "VEC4"
+        }, 
+        {
+            "bufferView" : 22, 
+            "componentType" : 5126, 
+            "count" : 266, 
+            "max" : [
+                0.8864582777023315, 
+                1.8106380105018616
+            ], 
+            "min" : [
+                -1.5086511373519897, 
+                0.08066481351852417
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 23, 
+            "componentType" : 5126, 
+            "count" : 266, 
+            "max" : [
+                0.999500572681427, 
+                0.9995005130767822
+            ], 
+            "min" : [
+                0.000499427318572998, 
+                0.0004994869232177734
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 24, 
+            "componentType" : 5121, 
+            "count" : 312, 
+            "max" : [
+                123
+            ], 
+            "min" : [
+                0
+            ], 
+            "type" : "SCALAR"
+        }, 
+        {
+            "bufferView" : 25, 
+            "componentType" : 5126, 
+            "count" : 124, 
+            "max" : [
+                2409.689208984375, 
+                -2030.7833251953125, 
+                551.3213500976562
+            ], 
+            "min" : [
+                -44.1905517578125, 
+                -4430.484375, 
+                407.13446044921875
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 26, 
+            "componentType" : 5126, 
+            "count" : 124, 
+            "max" : [
+                0.999969482421875, 
+                0.9998779296875, 
+                1.0
+            ], 
+            "min" : [
+                -0.922635555267334, 
+                -0.999969482421875, 
+                -0.999847412109375
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 27, 
+            "componentType" : 5126, 
+            "count" : 124, 
+            "max" : [
+                0.9999973773956299, 
+                0.9733167886734009, 
+                1.0, 
+                1.0
+            ], 
+            "min" : [
+                -1.0, 
+                -0.4053860902786255, 
+                -1.0, 
+                1.0
+            ], 
+            "type" : "VEC4"
+        }, 
+        {
+            "bufferView" : 28, 
+            "componentType" : 5126, 
+            "count" : 124, 
+            "max" : [
+                0.7948529124259949, 
+                0.9636451974511147
+            ], 
+            "min" : [
+                -1.7105169296264648, 
+                -1.123105525970459
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 29, 
+            "componentType" : 5126, 
+            "count" : 124, 
+            "max" : [
+                0.9995005130767822, 
+                0.9995005130767822
+            ], 
+            "min" : [
+                0.0004994869232177734, 
+                0.0004994869232177734
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 30, 
+            "componentType" : 5123, 
+            "count" : 30936, 
+            "max" : [
+                14280
+            ], 
+            "min" : [
+                0
+            ], 
+            "type" : "SCALAR"
+        }, 
+        {
+            "bufferView" : 31, 
+            "componentType" : 5126, 
+            "count" : 14281, 
+            "max" : [
+                527.2625122070312, 
+                541.1228637695312, 
+                554.564453125
+            ], 
+            "min" : [
+                -525.8133544921875, 
+                -521.7718505859375, 
+                -531.3485107421875
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 32, 
+            "componentType" : 5126, 
+            "count" : 14281, 
+            "max" : [
+                0.9959105253219604, 
+                0.9999738335609436, 
+                0.9956053495407104
+            ], 
+            "min" : [
+                -0.9963377714157104, 
+                -0.9999738335609436, 
+                -0.999664306640625
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 33, 
+            "componentType" : 5126, 
+            "count" : 14281, 
+            "max" : [
+                1.0, 
+                0.9996733665466309, 
+                0.9983628392219543, 
+                1.0
+            ], 
+            "min" : [
+                -1.0, 
+                -0.9996741414070129, 
+                -0.9933067560195923, 
+                1.0
+            ], 
+            "type" : "VEC4"
+        }, 
+        {
+            "bufferView" : 34, 
+            "componentType" : 5126, 
+            "count" : 14281, 
+            "max" : [
+                0.9338573217391968, 
+                0.9446605741977692
+            ], 
+            "min" : [
+                0.05475935339927673, 
+                0.0547562837600708
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 35, 
+            "componentType" : 5126, 
+            "count" : 14281, 
+            "max" : [
+                0.9994744062423706, 
+                0.9994777739048004
+            ], 
+            "min" : [
+                0.0005277395248413086, 
+                0.000586390495300293
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 36, 
+            "componentType" : 5123, 
+            "count" : 42096, 
+            "max" : [
+                15553
+            ], 
+            "min" : [
+                0
+            ], 
+            "type" : "SCALAR"
+        }, 
+        {
+            "bufferView" : 37, 
+            "componentType" : 5126, 
+            "count" : 15554, 
+            "max" : [
+                488.2200012207031, 
+                481.24658203125, 
+                503.6288146972656
+            ], 
+            "min" : [
+                -487.360595703125, 
+                -461.8955383300781, 
+                -503.7215881347656
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 38, 
+            "componentType" : 5126, 
+            "count" : 15554, 
+            "max" : [
+                0.9928891658782959, 
+                1.0, 
+                0.9984435439109802
+            ], 
+            "min" : [
+                -0.9972838759422302, 
+                -1.0, 
+                -0.9952391386032104
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 39, 
+            "componentType" : 5126, 
+            "count" : 15554, 
+            "max" : [
+                1.0, 
+                0.9978805184364319, 
+                0.037844639271497726, 
+                1.0
+            ], 
+            "min" : [
+                -0.9999996423721313, 
+                -0.9978803992271423, 
+                -0.03920215740799904, 
+                1.0
+            ], 
+            "type" : "VEC4"
+        }, 
+        {
+            "bufferView" : 40, 
+            "componentType" : 5126, 
+            "count" : 15554, 
+            "max" : [
+                0.8215230703353882, 
+                0.9740166366100311
+            ], 
+            "min" : [
+                0.055350661277770996, 
+                0.03179192543029785
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 41, 
+            "componentType" : 5126, 
+            "count" : 15554, 
+            "max" : [
+                0.9995005130767822, 
+                0.9995005130767822
+            ], 
+            "min" : [
+                0.0004994869232177734, 
+                0.0004994869232177734
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 42, 
+            "componentType" : 5121, 
+            "count" : 36, 
+            "max" : [
+                23
+            ], 
+            "min" : [
+                0
+            ], 
+            "type" : "SCALAR"
+        }, 
+        {
+            "bufferView" : 43, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                2408.0615234375, 
+                -1685.9091796875, 
+                557.59228515625
+            ], 
+            "min" : [
+                1913.132568359375, 
+                -4062.47412109375, 
+                194.59228515625
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 44, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                0.999969482421875, 
+                0.9505600333213806, 
+                1.0
+            ], 
+            "min" : [
+                -0.9963072538375854, 
+                -0.9701834321022034, 
+                -1.0
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 45, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                0.970140814781189, 
+                0.9999142289161682, 
+                0.01233687438070774, 
+                1.0
+            ], 
+            "min" : [
+                -1.0, 
+                -0.9962922930717468, 
+                -0.012096376158297062, 
+                1.0
+            ], 
+            "type" : "VEC4"
+        }, 
+        {
+            "bufferView" : 46, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                0.9310998916625977, 
+                3.179044723510742
+            ], 
+            "min" : [
+                -2.4045889377593994, 
+                0.26415449380874634
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 47, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                0.9995004534721375, 
+                0.9995005428791046
+            ], 
+            "min" : [
+                0.0004994571208953857, 
+                0.0004994869232177734
+            ], 
+            "type" : "VEC2"
+        }
+    ], 
+    "asset" : {
+        "generator" : "Khronos Blender glTF 2.0 exporter", 
+        "version" : "2.0"
+    }, 
+    "bufferViews" : [
+        {
+            "buffer" : 0, 
+            "byteLength" : 6096, 
+            "byteOffset" : 0, 
+            "target" : 34963
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 36576, 
+            "byteOffset" : 6096, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 36576, 
+            "byteOffset" : 42672, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 48768, 
+            "byteOffset" : 79248, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 24384, 
+            "byteOffset" : 128016, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 24384, 
+            "byteOffset" : 152400, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 36, 
+            "byteOffset" : 176784, 
+            "target" : 34963
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 288, 
+            "byteOffset" : 176820, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 288, 
+            "byteOffset" : 177108, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 384, 
+            "byteOffset" : 177396, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 192, 
+            "byteOffset" : 177780, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 192, 
+            "byteOffset" : 177972, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 816, 
+            "byteOffset" : 178164, 
+            "target" : 34963
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 3840, 
+            "byteOffset" : 178980, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 3840, 
+            "byteOffset" : 182820, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 5120, 
+            "byteOffset" : 186660, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 2560, 
+            "byteOffset" : 191780, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 2560, 
+            "byteOffset" : 194340, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 1464, 
+            "byteOffset" : 196900, 
+            "target" : 34963
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 3192, 
+            "byteOffset" : 198364, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 3192, 
+            "byteOffset" : 201556, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 4256, 
+            "byteOffset" : 204748, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 2128, 
+            "byteOffset" : 209004, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 2128, 
+            "byteOffset" : 211132, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 312, 
+            "byteOffset" : 213260, 
+            "target" : 34963
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 1488, 
+            "byteOffset" : 213572, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 1488, 
+            "byteOffset" : 215060, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 1984, 
+            "byteOffset" : 216548, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 992, 
+            "byteOffset" : 218532, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 992, 
+            "byteOffset" : 219524, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 61872, 
+            "byteOffset" : 220516, 
+            "target" : 34963
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 171372, 
+            "byteOffset" : 282388, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 171372, 
+            "byteOffset" : 453760, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 228496, 
+            "byteOffset" : 625132, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 114248, 
+            "byteOffset" : 853628, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 114248, 
+            "byteOffset" : 967876, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 84192, 
+            "byteOffset" : 1082124, 
+            "target" : 34963
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 186648, 
+            "byteOffset" : 1166316, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 186648, 
+            "byteOffset" : 1352964, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 248864, 
+            "byteOffset" : 1539612, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 124432, 
+            "byteOffset" : 1788476, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 124432, 
+            "byteOffset" : 1912908, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 36, 
+            "byteOffset" : 2037340, 
+            "target" : 34963
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 288, 
+            "byteOffset" : 2037376, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 288, 
+            "byteOffset" : 2037664, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 384, 
+            "byteOffset" : 2037952, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 192, 
+            "byteOffset" : 2038336, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 192, 
+            "byteOffset" : 2038528, 
+            "target" : 34962
+        }
+    ], 
+    "buffers" : [
+        {
+            "byteLength" : 2038720, 
+            "uri" : "model.bin"
+        }
+    ], 
+    "cameras" : [
+        {
+            "name" : "Camera", 
+            "perspective" : {
+                "aspectRatio" : 1.7777777777777777, 
+                "yfov" : 0.5033799372418416, 
+                "zfar" : 100.0, 
+                "znear" : 0.10000000149011612
+            }, 
+            "type" : "perspective"
+        }
+    ], 
+    "images" : [
+        {
+            "uri" : "uv_bridge3.png"
+        }, 
+        {
+            "uri" : "wall_ground_fin.png"
+        }, 
+        {
+            "uri" : "house_fin.png"
+        }, 
+        {
+            "uri" : "grass1_fin.png"
+        }, 
+        {
+            "uri" : "grass2_fin.png"
+        }, 
+        {
+            "uri" : "concrete_ground_fin1.png"
+        }, 
+        {
+            "uri" : "concrete1.png"
+        }, 
+        {
+            "uri" : "new_metal2.png"
+        }, 
+        {
+            "uri" : "new_metal_NRM1.png"
+        }
+    ], 
+    "materials" : [
+        {
+            "name" : "bridge.001", 
+            "pbrMetallicRoughness" : {
+                "baseColorFactor" : [
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    1.0
+                ], 
+                "baseColorTexture" : {
+                    "index" : 0
+                }, 
+                "metallicFactor" : 0.0
+            }
+        }, 
+        {
+            "name" : "Concrete_Smooth95.001", 
+            "pbrMetallicRoughness" : {
+                "baseColorFactor" : [
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    1.0
+                ], 
+                "baseColorTexture" : {
+                    "index" : 1
+                }, 
+                "metallicFactor" : 0.0
+            }
+        }, 
+        {
+            "name" : "dom.001", 
+            "pbrMetallicRoughness" : {
+                "baseColorFactor" : [
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    1.0
+                ], 
+                "baseColorTexture" : {
+                    "index" : 2
+                }, 
+                "metallicFactor" : 0.0
+            }
+        }, 
+        {
+            "name" : "grass1.001", 
+            "pbrMetallicRoughness" : {
+                "baseColorFactor" : [
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    1.0
+                ], 
+                "baseColorTexture" : {
+                    "index" : 3
+                }, 
+                "metallicFactor" : 0.0
+            }
+        }, 
+        {
+            "name" : "grass2.001", 
+            "pbrMetallicRoughness" : {
+                "baseColorFactor" : [
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    1.0
+                ], 
+                "baseColorTexture" : {
+                    "index" : 4
+                }, 
+                "metallicFactor" : 0.0
+            }
+        }, 
+        {
+            "name" : "podosnova.001", 
+            "pbrMetallicRoughness" : {
+                "baseColorFactor" : [
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    1.0
+                ], 
+                "baseColorTexture" : {
+                    "index" : 5
+                }, 
+                "metallicFactor" : 0.0
+            }
+        }, 
+        {
+            "name" : "tarelka_concrete.001", 
+            "pbrMetallicRoughness" : {
+                "baseColorFactor" : [
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    1.0
+                ], 
+                "baseColorTexture" : {
+                    "index" : 6
+                }, 
+                "metallicFactor" : 0.0
+            }
+        }, 
+        {
+            "name" : "tarelka_metall.001", 
+            "normalTexture" : {
+                "index" : 8
+            }, 
+            "pbrMetallicRoughness" : {
+                "baseColorTexture" : {
+                    "index" : 7
+                }, 
+                "roughnessFactor" : 0.418181836605072
+            }
+        }
+    ], 
+    "meshes" : [
+        {
+            "name" : "Untitled.001", 
+            "primitives" : [
+                {
+                    "attributes" : {
+                        "NORMAL" : 2, 
+                        "POSITION" : 1, 
+                        "TANGENT" : 3, 
+                        "TEXCOORD_0" : 4, 
+                        "TEXCOORD_1" : 5
+                    }, 
+                    "indices" : 0, 
+                    "material" : 0
+                }, 
+                {
+                    "attributes" : {
+                        "NORMAL" : 8, 
+                        "POSITION" : 7, 
+                        "TANGENT" : 9, 
+                        "TEXCOORD_0" : 10, 
+                        "TEXCOORD_1" : 11
+                    }, 
+                    "indices" : 6, 
+                    "material" : 5
+                }, 
+                {
+                    "attributes" : {
+                        "NORMAL" : 14, 
+                        "POSITION" : 13, 
+                        "TANGENT" : 15, 
+                        "TEXCOORD_0" : 16, 
+                        "TEXCOORD_1" : 17
+                    }, 
+                    "indices" : 12, 
+                    "material" : 1
+                }, 
+                {
+                    "attributes" : {
+                        "NORMAL" : 20, 
+                        "POSITION" : 19, 
+                        "TANGENT" : 21, 
+                        "TEXCOORD_0" : 22, 
+                        "TEXCOORD_1" : 23
+                    }, 
+                    "indices" : 18, 
+                    "material" : 3
+                }, 
+                {
+                    "attributes" : {
+                        "NORMAL" : 26, 
+                        "POSITION" : 25, 
+                        "TANGENT" : 27, 
+                        "TEXCOORD_0" : 28, 
+                        "TEXCOORD_1" : 29
+                    }, 
+                    "indices" : 24, 
+                    "material" : 4
+                }, 
+                {
+                    "attributes" : {
+                        "NORMAL" : 32, 
+                        "POSITION" : 31, 
+                        "TANGENT" : 33, 
+                        "TEXCOORD_0" : 34, 
+                        "TEXCOORD_1" : 35
+                    }, 
+                    "indices" : 30, 
+                    "material" : 6
+                }, 
+                {
+                    "attributes" : {
+                        "NORMAL" : 38, 
+                        "POSITION" : 37, 
+                        "TANGENT" : 39, 
+                        "TEXCOORD_0" : 40, 
+                        "TEXCOORD_1" : 41
+                    }, 
+                    "indices" : 36, 
+                    "material" : 7
+                }, 
+                {
+                    "attributes" : {
+                        "NORMAL" : 44, 
+                        "POSITION" : 43, 
+                        "TANGENT" : 45, 
+                        "TEXCOORD_0" : 46, 
+                        "TEXCOORD_1" : 47
+                    }, 
+                    "indices" : 42, 
+                    "material" : 2
+                }
+            ]
+        }
+    ], 
+    "nodes" : [
+        {
+            "camera" : 0, 
+            "name" : "Correction_Camera", 
+            "rotation" : [
+                -0.7071067690849304, 
+                -0.0, 
+                0.0, 
+                0.7071067690849304
+            ]
+        }, 
+        {
+            "children" : [
+                0
+            ], 
+            "name" : "Camera", 
+            "rotation" : [
+                0.483536034822464, 
+                0.33687159419059753, 
+                -0.20870360732078552, 
+                0.7804827094078064
+            ], 
+            "translation" : [
+                7.481131553649902, 
+                5.34366512298584, 
+                6.5076398849487305
+            ]
+        }, 
+        {
+            "mesh" : 0, 
+            "name" : "Sphere003", 
+            "rotation" : [
+                -0.7071068286895752, 
+                1.0677015183091498e-07, 
+                1.0677017314719706e-07, 
+                0.7071067094802856
+            ], 
+            "scale" : [
+                -0.009999999776482582, 
+                -0.005826558452099562, 
+                -0.009999999776482582
+            ], 
+            "translation" : [
+                6.082563400268555, 
+                -0.5265352725982666, 
+                -17.64678382873535
+            ]
+        }
+    ], 
+    "samplers" : [
+        {}
+    ], 
+    "scene" : 0, 
+    "scenes" : [
+        {
+            "name" : "Scene", 
+            "nodes" : [
+                2, 
+                1
+            ]
+        }
+    ], 
+    "textures" : [
+        {
+            "sampler" : 0, 
+            "source" : 0
+        }, 
+        {
+            "sampler" : 0, 
+            "source" : 1
+        }, 
+        {
+            "sampler" : 0, 
+            "source" : 2
+        }, 
+        {
+            "sampler" : 0, 
+            "source" : 3
+        }, 
+        {
+            "sampler" : 0, 
+            "source" : 4
+        }, 
+        {
+            "sampler" : 0, 
+            "source" : 5
+        }, 
+        {
+            "sampler" : 0, 
+            "source" : 6
+        }, 
+        {
+            "sampler" : 0, 
+            "source" : 7
+        }, 
+        {
+            "sampler" : 0, 
+            "source" : 8
+        }
+    ]
+}

+ 1379 - 0
public/vr/assets/mon/model.gltf 2

@@ -0,0 +1,1379 @@
+{
+    "accessors" : [
+        {
+            "bufferView" : 0, 
+            "componentType" : 5123, 
+            "count" : 3048, 
+            "max" : [
+                3047
+            ], 
+            "min" : [
+                0
+            ], 
+            "type" : "SCALAR"
+        }, 
+        {
+            "bufferView" : 1, 
+            "componentType" : 5126, 
+            "count" : 3048, 
+            "max" : [
+                2154.953125, 
+                179.5430450439453, 
+                561.7412109375
+            ], 
+            "min" : [
+                -1400.214111328125, 
+                -160.822509765625, 
+                361.06622314453125
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 2, 
+            "componentType" : 5126, 
+            "count" : 3048, 
+            "max" : [
+                0.9981797933578491, 
+                0.9999483227729797, 
+                0.9999634027481079
+            ], 
+            "min" : [
+                -0.9938223361968994, 
+                -0.999948263168335, 
+                -0.9999465942382812
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 3, 
+            "componentType" : 5126, 
+            "count" : 3048, 
+            "max" : [
+                0.9999992847442627, 
+                0.9997701644897461, 
+                0.9859136343002319, 
+                1.0
+            ], 
+            "min" : [
+                -0.9999990463256836, 
+                -0.9999999403953552, 
+                -0.9404096007347107, 
+                1.0
+            ], 
+            "type" : "VEC4"
+        }, 
+        {
+            "bufferView" : 4, 
+            "componentType" : 5126, 
+            "count" : 3048, 
+            "max" : [
+                0.9662460088729858, 
+                0.9568333253264427
+            ], 
+            "min" : [
+                0.020078659057617188, 
+                0.5387802720069885
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 5, 
+            "componentType" : 5126, 
+            "count" : 3048, 
+            "max" : [
+                0.9995005130767822, 
+                0.9974959492683411
+            ], 
+            "min" : [
+                0.0004994869232177734, 
+                0.0025040507316589355
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 6, 
+            "componentType" : 5121, 
+            "count" : 36, 
+            "max" : [
+                23
+            ], 
+            "min" : [
+                0
+            ], 
+            "type" : "SCALAR"
+        }, 
+        {
+            "bufferView" : 7, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                2409.689208984375, 
+                1394.183349609375, 
+                557.0067138671875
+            ], 
+            "min" : [
+                -1570.933349609375, 
+                -4428.9580078125, 
+                553.3555297851562
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 8, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                0.999969482421875, 
+                0.999969482421875, 
+                1.0
+            ], 
+            "min" : [
+                -0.9998779296875, 
+                -0.999969482421875, 
+                -1.0
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 9, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                0.9999991059303284, 
+                0.9999901652336121, 
+                1.428983580770149e-11, 
+                1.0
+            ], 
+            "min" : [
+                -1.0, 
+                -0.9998976588249207, 
+                -3.360277744945961e-08, 
+                1.0
+            ], 
+            "type" : "VEC4"
+        }, 
+        {
+            "bufferView" : 10, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                0.9143322706222534, 
+                2.674062967300415
+            ], 
+            "min" : [
+                -1.7761019468307495, 
+                0.03826010227203369
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 11, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                0.9995005130767822, 
+                0.9995004832744598
+            ], 
+            "min" : [
+                0.0004994869232177734, 
+                0.0004978179931640625
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 12, 
+            "componentType" : 5123, 
+            "count" : 408, 
+            "max" : [
+                319
+            ], 
+            "min" : [
+                0
+            ], 
+            "type" : "SCALAR"
+        }, 
+        {
+            "bufferView" : 13, 
+            "componentType" : 5126, 
+            "count" : 320, 
+            "max" : [
+                2076.62646484375, 
+                -2002.6561279296875, 
+                551.3213500976562
+            ], 
+            "min" : [
+                -51.38232421875, 
+                -4062.756591796875, 
+                407.06842041015625
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 14, 
+            "componentType" : 5126, 
+            "count" : 320, 
+            "max" : [
+                0.968828558921814, 
+                0.7209082245826721, 
+                0.9999973773956299
+            ], 
+            "min" : [
+                -0.9686529636383057, 
+                -0.24771618843078613, 
+                -0.9999973773956299
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 15, 
+            "componentType" : 5126, 
+            "count" : 320, 
+            "max" : [
+                0.6921502351760864, 
+                0.763036847114563, 
+                0.999813973903656, 
+                1.0
+            ], 
+            "min" : [
+                -1.0, 
+                -0.012638268060982227, 
+                -0.9999926090240479, 
+                1.0
+            ], 
+            "type" : "VEC4"
+        }, 
+        {
+            "bufferView" : 16, 
+            "componentType" : 5126, 
+            "count" : 320, 
+            "max" : [
+                0.9519938230514526, 
+                0.9484422206878662
+            ], 
+            "min" : [
+                0.05574312433600426, 
+                0.04845726490020752
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 17, 
+            "componentType" : 5126, 
+            "count" : 320, 
+            "max" : [
+                0.9995004534721375, 
+                0.9995004534721375
+            ], 
+            "min" : [
+                0.0004995465278625488, 
+                0.0004995465278625488
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 18, 
+            "componentType" : 5123, 
+            "count" : 732, 
+            "max" : [
+                265
+            ], 
+            "min" : [
+                0
+            ], 
+            "type" : "SCALAR"
+        }, 
+        {
+            "bufferView" : 19, 
+            "componentType" : 5126, 
+            "count" : 266, 
+            "max" : [
+                2215.679931640625, 
+                1222.02392578125, 
+                553.511474609375
+            ], 
+            "min" : [
+                -1361.7548828125, 
+                -4034.57666015625, 
+                551.511474609375
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 20, 
+            "componentType" : 5126, 
+            "count" : 266, 
+            "max" : [
+                0.9969481229782104, 
+                0.999786376953125, 
+                1.0
+            ], 
+            "min" : [
+                -0.999969482421875, 
+                -0.999969482421875, 
+                -1.0
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 21, 
+            "componentType" : 5126, 
+            "count" : 266, 
+            "max" : [
+                1.0, 
+                0.0002075237425742671, 
+                2.1911339409541597e-09, 
+                1.0
+            ], 
+            "min" : [
+                -1.0, 
+                -0.0005310780834406614, 
+                -3.980125740099538e-08, 
+                1.0
+            ], 
+            "type" : "VEC4"
+        }, 
+        {
+            "bufferView" : 22, 
+            "componentType" : 5126, 
+            "count" : 266, 
+            "max" : [
+                0.8864582777023315, 
+                1.8106380105018616
+            ], 
+            "min" : [
+                -1.5086511373519897, 
+                0.08066481351852417
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 23, 
+            "componentType" : 5126, 
+            "count" : 266, 
+            "max" : [
+                0.999500572681427, 
+                0.9995005130767822
+            ], 
+            "min" : [
+                0.000499427318572998, 
+                0.0004994869232177734
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 24, 
+            "componentType" : 5121, 
+            "count" : 312, 
+            "max" : [
+                123
+            ], 
+            "min" : [
+                0
+            ], 
+            "type" : "SCALAR"
+        }, 
+        {
+            "bufferView" : 25, 
+            "componentType" : 5126, 
+            "count" : 124, 
+            "max" : [
+                2409.689208984375, 
+                -2030.7833251953125, 
+                551.3213500976562
+            ], 
+            "min" : [
+                -44.1905517578125, 
+                -4430.484375, 
+                407.13446044921875
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 26, 
+            "componentType" : 5126, 
+            "count" : 124, 
+            "max" : [
+                0.999969482421875, 
+                0.9998779296875, 
+                1.0
+            ], 
+            "min" : [
+                -0.922635555267334, 
+                -0.999969482421875, 
+                -0.999847412109375
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 27, 
+            "componentType" : 5126, 
+            "count" : 124, 
+            "max" : [
+                0.9999973773956299, 
+                0.9733167886734009, 
+                1.0, 
+                1.0
+            ], 
+            "min" : [
+                -1.0, 
+                -0.4053860902786255, 
+                -1.0, 
+                1.0
+            ], 
+            "type" : "VEC4"
+        }, 
+        {
+            "bufferView" : 28, 
+            "componentType" : 5126, 
+            "count" : 124, 
+            "max" : [
+                0.7948529124259949, 
+                0.9636451974511147
+            ], 
+            "min" : [
+                -1.7105169296264648, 
+                -1.123105525970459
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 29, 
+            "componentType" : 5126, 
+            "count" : 124, 
+            "max" : [
+                0.9995005130767822, 
+                0.9995005130767822
+            ], 
+            "min" : [
+                0.0004994869232177734, 
+                0.0004994869232177734
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 30, 
+            "componentType" : 5123, 
+            "count" : 30936, 
+            "max" : [
+                14280
+            ], 
+            "min" : [
+                0
+            ], 
+            "type" : "SCALAR"
+        }, 
+        {
+            "bufferView" : 31, 
+            "componentType" : 5126, 
+            "count" : 14281, 
+            "max" : [
+                527.2625122070312, 
+                541.1228637695312, 
+                554.564453125
+            ], 
+            "min" : [
+                -525.8133544921875, 
+                -521.7718505859375, 
+                -531.3485107421875
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 32, 
+            "componentType" : 5126, 
+            "count" : 14281, 
+            "max" : [
+                0.9959105253219604, 
+                0.9999738335609436, 
+                0.9956053495407104
+            ], 
+            "min" : [
+                -0.9963377714157104, 
+                -0.9999738335609436, 
+                -0.999664306640625
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 33, 
+            "componentType" : 5126, 
+            "count" : 14281, 
+            "max" : [
+                1.0, 
+                0.9996733665466309, 
+                0.9983628392219543, 
+                1.0
+            ], 
+            "min" : [
+                -1.0, 
+                -0.9996741414070129, 
+                -0.9933067560195923, 
+                1.0
+            ], 
+            "type" : "VEC4"
+        }, 
+        {
+            "bufferView" : 34, 
+            "componentType" : 5126, 
+            "count" : 14281, 
+            "max" : [
+                0.9338573217391968, 
+                0.9446605741977692
+            ], 
+            "min" : [
+                0.05475935339927673, 
+                0.0547562837600708
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 35, 
+            "componentType" : 5126, 
+            "count" : 14281, 
+            "max" : [
+                0.9994744062423706, 
+                0.9994777739048004
+            ], 
+            "min" : [
+                0.0005277395248413086, 
+                0.000586390495300293
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 36, 
+            "componentType" : 5123, 
+            "count" : 42096, 
+            "max" : [
+                15553
+            ], 
+            "min" : [
+                0
+            ], 
+            "type" : "SCALAR"
+        }, 
+        {
+            "bufferView" : 37, 
+            "componentType" : 5126, 
+            "count" : 15554, 
+            "max" : [
+                488.2200012207031, 
+                481.24658203125, 
+                503.6288146972656
+            ], 
+            "min" : [
+                -487.360595703125, 
+                -461.8955383300781, 
+                -503.7215881347656
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 38, 
+            "componentType" : 5126, 
+            "count" : 15554, 
+            "max" : [
+                0.9928891658782959, 
+                1.0, 
+                0.9984435439109802
+            ], 
+            "min" : [
+                -0.9972838759422302, 
+                -1.0, 
+                -0.9952391386032104
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 39, 
+            "componentType" : 5126, 
+            "count" : 15554, 
+            "max" : [
+                1.0, 
+                0.9978805184364319, 
+                0.037844639271497726, 
+                1.0
+            ], 
+            "min" : [
+                -0.9999996423721313, 
+                -0.9978803992271423, 
+                -0.03920215740799904, 
+                1.0
+            ], 
+            "type" : "VEC4"
+        }, 
+        {
+            "bufferView" : 40, 
+            "componentType" : 5126, 
+            "count" : 15554, 
+            "max" : [
+                0.8215230703353882, 
+                0.9740166366100311
+            ], 
+            "min" : [
+                0.055350661277770996, 
+                0.03179192543029785
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 41, 
+            "componentType" : 5126, 
+            "count" : 15554, 
+            "max" : [
+                0.9995005130767822, 
+                0.9995005130767822
+            ], 
+            "min" : [
+                0.0004994869232177734, 
+                0.0004994869232177734
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 42, 
+            "componentType" : 5121, 
+            "count" : 36, 
+            "max" : [
+                23
+            ], 
+            "min" : [
+                0
+            ], 
+            "type" : "SCALAR"
+        }, 
+        {
+            "bufferView" : 43, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                2408.0615234375, 
+                -1685.9091796875, 
+                557.59228515625
+            ], 
+            "min" : [
+                1913.132568359375, 
+                -4062.47412109375, 
+                194.59228515625
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 44, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                0.999969482421875, 
+                0.9505600333213806, 
+                1.0
+            ], 
+            "min" : [
+                -0.9963072538375854, 
+                -0.9701834321022034, 
+                -1.0
+            ], 
+            "type" : "VEC3"
+        }, 
+        {
+            "bufferView" : 45, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                0.970140814781189, 
+                0.9999142289161682, 
+                0.01233687438070774, 
+                1.0
+            ], 
+            "min" : [
+                -1.0, 
+                -0.9962922930717468, 
+                -0.012096376158297062, 
+                1.0
+            ], 
+            "type" : "VEC4"
+        }, 
+        {
+            "bufferView" : 46, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                0.9310998916625977, 
+                3.179044723510742
+            ], 
+            "min" : [
+                -2.4045889377593994, 
+                0.26415449380874634
+            ], 
+            "type" : "VEC2"
+        }, 
+        {
+            "bufferView" : 47, 
+            "componentType" : 5126, 
+            "count" : 24, 
+            "max" : [
+                0.9995004534721375, 
+                0.9995005428791046
+            ], 
+            "min" : [
+                0.0004994571208953857, 
+                0.0004994869232177734
+            ], 
+            "type" : "VEC2"
+        }
+    ], 
+    "asset" : {
+        "generator" : "Khronos Blender glTF 2.0 exporter", 
+        "version" : "2.0"
+    }, 
+    "bufferViews" : [
+        {
+            "buffer" : 0, 
+            "byteLength" : 6096, 
+            "byteOffset" : 0, 
+            "target" : 34963
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 36576, 
+            "byteOffset" : 6096, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 36576, 
+            "byteOffset" : 42672, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 48768, 
+            "byteOffset" : 79248, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 24384, 
+            "byteOffset" : 128016, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 24384, 
+            "byteOffset" : 152400, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 36, 
+            "byteOffset" : 176784, 
+            "target" : 34963
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 288, 
+            "byteOffset" : 176820, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 288, 
+            "byteOffset" : 177108, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 384, 
+            "byteOffset" : 177396, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 192, 
+            "byteOffset" : 177780, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 192, 
+            "byteOffset" : 177972, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 816, 
+            "byteOffset" : 178164, 
+            "target" : 34963
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 3840, 
+            "byteOffset" : 178980, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 3840, 
+            "byteOffset" : 182820, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 5120, 
+            "byteOffset" : 186660, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 2560, 
+            "byteOffset" : 191780, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 2560, 
+            "byteOffset" : 194340, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 1464, 
+            "byteOffset" : 196900, 
+            "target" : 34963
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 3192, 
+            "byteOffset" : 198364, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 3192, 
+            "byteOffset" : 201556, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 4256, 
+            "byteOffset" : 204748, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 2128, 
+            "byteOffset" : 209004, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 2128, 
+            "byteOffset" : 211132, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 312, 
+            "byteOffset" : 213260, 
+            "target" : 34963
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 1488, 
+            "byteOffset" : 213572, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 1488, 
+            "byteOffset" : 215060, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 1984, 
+            "byteOffset" : 216548, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 992, 
+            "byteOffset" : 218532, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 992, 
+            "byteOffset" : 219524, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 61872, 
+            "byteOffset" : 220516, 
+            "target" : 34963
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 171372, 
+            "byteOffset" : 282388, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 171372, 
+            "byteOffset" : 453760, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 228496, 
+            "byteOffset" : 625132, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 114248, 
+            "byteOffset" : 853628, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 114248, 
+            "byteOffset" : 967876, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 84192, 
+            "byteOffset" : 1082124, 
+            "target" : 34963
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 186648, 
+            "byteOffset" : 1166316, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 186648, 
+            "byteOffset" : 1352964, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 248864, 
+            "byteOffset" : 1539612, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 124432, 
+            "byteOffset" : 1788476, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 124432, 
+            "byteOffset" : 1912908, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 36, 
+            "byteOffset" : 2037340, 
+            "target" : 34963
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 288, 
+            "byteOffset" : 2037376, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 288, 
+            "byteOffset" : 2037664, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 384, 
+            "byteOffset" : 2037952, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 192, 
+            "byteOffset" : 2038336, 
+            "target" : 34962
+        }, 
+        {
+            "buffer" : 0, 
+            "byteLength" : 192, 
+            "byteOffset" : 2038528, 
+            "target" : 34962
+        }
+    ], 
+    "buffers" : [
+        {
+            "byteLength" : 2038720, 
+            "uri" : "model.bin"
+        }
+    ], 
+    "cameras" : [
+        {
+            "name" : "Camera", 
+            "perspective" : {
+                "aspectRatio" : 1.7777777777777777, 
+                "yfov" : 0.5033799372418416, 
+                "zfar" : 100.0, 
+                "znear" : 0.10000000149011612
+            }, 
+            "type" : "perspective"
+        }
+    ], 
+    "images" : [
+        {
+            "uri" : "uv_bridge3.png"
+        }, 
+        {
+            "uri" : "wall_ground_fin.png"
+        }, 
+        {
+            "uri" : "house_fin.png"
+        }, 
+        {
+            "uri" : "grass1_fin.png"
+        }, 
+        {
+            "uri" : "grass2_fin.png"
+        }, 
+        {
+            "uri" : "concrete_ground_fin1.png"
+        }, 
+        {
+            "uri" : "concrete1.png"
+        }, 
+        {
+            "uri" : "new_metal (2).png"
+        }, 
+        {
+            "uri" : "new_metal_NRM1.png"
+        }
+    ], 
+    "materials" : [
+        {
+            "name" : "bridge.001", 
+            "pbrMetallicRoughness" : {
+                "baseColorFactor" : [
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    1.0
+                ], 
+                "baseColorTexture" : {
+                    "index" : 0
+                }, 
+                "metallicFactor" : 0.0
+            }
+        }, 
+        {
+            "name" : "Concrete_Smooth95.001", 
+            "pbrMetallicRoughness" : {
+                "baseColorFactor" : [
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    1.0
+                ], 
+                "baseColorTexture" : {
+                    "index" : 1
+                }, 
+                "metallicFactor" : 0.0
+            }
+        }, 
+        {
+            "name" : "dom.001", 
+            "pbrMetallicRoughness" : {
+                "baseColorFactor" : [
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    1.0
+                ], 
+                "baseColorTexture" : {
+                    "index" : 2
+                }, 
+                "metallicFactor" : 0.0
+            }
+        }, 
+        {
+            "name" : "grass1.001", 
+            "pbrMetallicRoughness" : {
+                "baseColorFactor" : [
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    1.0
+                ], 
+                "baseColorTexture" : {
+                    "index" : 3
+                }, 
+                "metallicFactor" : 0.0
+            }
+        }, 
+        {
+            "name" : "grass2.001", 
+            "pbrMetallicRoughness" : {
+                "baseColorFactor" : [
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    1.0
+                ], 
+                "baseColorTexture" : {
+                    "index" : 4
+                }, 
+                "metallicFactor" : 0.0
+            }
+        }, 
+        {
+            "name" : "podosnova.001", 
+            "pbrMetallicRoughness" : {
+                "baseColorFactor" : [
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    1.0
+                ], 
+                "baseColorTexture" : {
+                    "index" : 5
+                }, 
+                "metallicFactor" : 0.0
+            }
+        }, 
+        {
+            "name" : "tarelka_concrete.001", 
+            "pbrMetallicRoughness" : {
+                "baseColorFactor" : [
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    0.4704000066280365, 
+                    1.0
+                ], 
+                "baseColorTexture" : {
+                    "index" : 6
+                }, 
+                "metallicFactor" : 0.0
+            }
+        }, 
+        {
+            "name" : "tarelka_metall.001", 
+            "normalTexture" : {
+                "index" : 8
+            }, 
+            "pbrMetallicRoughness" : {
+                "baseColorTexture" : {
+                    "index" : 7
+                }, 
+                "roughnessFactor" : 0.418181836605072
+            }
+        }
+    ], 
+    "meshes" : [
+        {
+            "name" : "Untitled.001", 
+            "primitives" : [
+                {
+                    "attributes" : {
+                        "NORMAL" : 2, 
+                        "POSITION" : 1, 
+                        "TANGENT" : 3, 
+                        "TEXCOORD_0" : 4, 
+                        "TEXCOORD_1" : 5
+                    }, 
+                    "indices" : 0, 
+                    "material" : 0
+                }, 
+                {
+                    "attributes" : {
+                        "NORMAL" : 8, 
+                        "POSITION" : 7, 
+                        "TANGENT" : 9, 
+                        "TEXCOORD_0" : 10, 
+                        "TEXCOORD_1" : 11
+                    }, 
+                    "indices" : 6, 
+                    "material" : 5
+                }, 
+                {
+                    "attributes" : {
+                        "NORMAL" : 14, 
+                        "POSITION" : 13, 
+                        "TANGENT" : 15, 
+                        "TEXCOORD_0" : 16, 
+                        "TEXCOORD_1" : 17
+                    }, 
+                    "indices" : 12, 
+                    "material" : 1
+                }, 
+                {
+                    "attributes" : {
+                        "NORMAL" : 20, 
+                        "POSITION" : 19, 
+                        "TANGENT" : 21, 
+                        "TEXCOORD_0" : 22, 
+                        "TEXCOORD_1" : 23
+                    }, 
+                    "indices" : 18, 
+                    "material" : 3
+                }, 
+                {
+                    "attributes" : {
+                        "NORMAL" : 26, 
+                        "POSITION" : 25, 
+                        "TANGENT" : 27, 
+                        "TEXCOORD_0" : 28, 
+                        "TEXCOORD_1" : 29
+                    }, 
+                    "indices" : 24, 
+                    "material" : 4
+                }, 
+                {
+                    "attributes" : {
+                        "NORMAL" : 32, 
+                        "POSITION" : 31, 
+                        "TANGENT" : 33, 
+                        "TEXCOORD_0" : 34, 
+                        "TEXCOORD_1" : 35
+                    }, 
+                    "indices" : 30, 
+                    "material" : 6
+                }, 
+                {
+                    "attributes" : {
+                        "NORMAL" : 38, 
+                        "POSITION" : 37, 
+                        "TANGENT" : 39, 
+                        "TEXCOORD_0" : 40, 
+                        "TEXCOORD_1" : 41
+                    }, 
+                    "indices" : 36, 
+                    "material" : 7
+                }, 
+                {
+                    "attributes" : {
+                        "NORMAL" : 44, 
+                        "POSITION" : 43, 
+                        "TANGENT" : 45, 
+                        "TEXCOORD_0" : 46, 
+                        "TEXCOORD_1" : 47
+                    }, 
+                    "indices" : 42, 
+                    "material" : 2
+                }
+            ]
+        }
+    ], 
+    "nodes" : [
+        {
+            "camera" : 0, 
+            "name" : "Correction_Camera", 
+            "rotation" : [
+                -0.7071067690849304, 
+                -0.0, 
+                0.0, 
+                0.7071067690849304
+            ]
+        }, 
+        {
+            "children" : [
+                0
+            ], 
+            "name" : "Camera", 
+            "rotation" : [
+                0.483536034822464, 
+                0.33687159419059753, 
+                -0.20870360732078552, 
+                0.7804827094078064
+            ], 
+            "translation" : [
+                7.481131553649902, 
+                5.34366512298584, 
+                6.5076398849487305
+            ]
+        }, 
+        {
+            "mesh" : 0, 
+            "name" : "Sphere003", 
+            "rotation" : [
+                -0.7071068286895752, 
+                1.0677015183091498e-07, 
+                1.0677017314719706e-07, 
+                0.7071067094802856
+            ], 
+            "scale" : [
+                -0.009999999776482582, 
+                -0.005826558452099562, 
+                -0.009999999776482582
+            ], 
+            "translation" : [
+                6.082563400268555, 
+                -0.5265352725982666, 
+                -17.64678382873535
+            ]
+        }
+    ], 
+    "samplers" : [
+        {}
+    ], 
+    "scene" : 0, 
+    "scenes" : [
+        {
+            "name" : "Scene", 
+            "nodes" : [
+                2, 
+                1
+            ]
+        }
+    ], 
+    "textures" : [
+        {
+            "sampler" : 0, 
+            "source" : 0
+        }, 
+        {
+            "sampler" : 0, 
+            "source" : 1
+        }, 
+        {
+            "sampler" : 0, 
+            "source" : 2
+        }, 
+        {
+            "sampler" : 0, 
+            "source" : 3
+        }, 
+        {
+            "sampler" : 0, 
+            "source" : 4
+        }, 
+        {
+            "sampler" : 0, 
+            "source" : 5
+        }, 
+        {
+            "sampler" : 0, 
+            "source" : 6
+        }, 
+        {
+            "sampler" : 0, 
+            "source" : 7
+        }, 
+        {
+            "sampler" : 0, 
+            "source" : 8
+        }
+    ]
+}

BIN
public/vr/assets/mon/new_metal2.png


BIN
public/vr/assets/mon/new_metal_NRM1.png


BIN
public/vr/assets/mon/uv_bridge3.png


BIN
public/vr/assets/mon/wall_ground_fin.png


File diff suppressed because it is too large
+ 225 - 0
public/vr/assets/plane.dae


BIN
public/vr/assets/sky1.jpg


BIN
public/vr/assets/sky3.jpg


BIN
public/vr/assets/skyes/sky1.jpg


BIN
public/vr/assets/skyes/sky2.jpg


BIN
public/vr/assets/skyes/sky3.jpg


BIN
public/vr/assets/sounds/footsteps.mp3


BIN
public/vr/assets/sounds/golos.mp3


BIN
public/vr/assets/textures/cube/nx.jpg


BIN
public/vr/assets/textures/cube/ny.jpg


BIN
public/vr/assets/textures/cube/nz.jpg


BIN
public/vr/assets/textures/cube/px.jpg


BIN
public/vr/assets/textures/cube/py.jpg


BIN
public/vr/assets/textures/cube/pz.jpg


BIN
public/vr/assets/textures/skybox/nx.jpg


BIN
public/vr/assets/textures/skybox/ny.jpg


BIN
public/vr/assets/textures/skybox/nz.jpg


BIN
public/vr/assets/textures/skybox/px.jpg


BIN
public/vr/assets/textures/skybox/py.jpg


BIN
public/vr/assets/textures/skybox/pz.jpg


BIN
public/vr/assets/textures/skybox2/nx.jpg


BIN
public/vr/assets/textures/skybox2/ny.jpg


BIN
public/vr/assets/textures/skybox2/nz.jpg


BIN
public/vr/assets/textures/skybox2/px.jpg


BIN
public/vr/assets/textures/skybox2/py.jpg


BIN
public/vr/assets/textures/skybox2/pz.jpg


+ 8 - 0
public/vr/index.vwf.config.yaml

@@ -0,0 +1,8 @@
+---
+info:
+  title: "VWF & AFrame Example App"
+model:
+  vwf/model/aframe:
+view:
+  vwf/view/aframe:
+  vwf/view/editor-new:

+ 36 - 0
public/vr/index.vwf.yaml

@@ -0,0 +1,36 @@
+# A-Frame & VWF simple scene
+# Copyright 2017 Krestianstvo.org project
+---
+extends: http://vwf.example.com/aframe/ascene.vwf
+properties:
+  assets: "assets.json"
+children:
+  skySun:
+    extends: http://vwf.example.com/aframe/aentity.vwf
+    children:
+      sun:
+        extends: http://vwf.example.com/aframe/app-sun-component.vwf
+  newSky:
+    extends: http://vwf.example.com/aframe/aentity.vwf
+    children:
+      skyshader:
+        extends: http://vwf.example.com/aframe/app-skyshader-component.vwf
+  lightAmbient:
+    extends: http://vwf.example.com/aframe/alight.vwf
+    properties:
+      type: "ambient"
+      color: "#CCC"
+  myLight:
+    extends: http://vwf.example.com/aframe/alight.vwf
+    properties:
+      type: "hemisphere"
+      position: "0 20 0"
+  model:
+    extends: http://vwf.example.com/aframe/agltfmodel.vwf
+    properties:
+      src: "#mon"
+      position: "20 6.1 -15"
+      rotation: "0 90 0"
+    children:
+      envmap:
+        extends: http://vwf.example.com/aframe/app-envmap-component.vwf

BIN
public/vr/webimg.jpg


+ 6 - 0
public/webapps.json

@@ -25,5 +25,11 @@
         "title":"GearVR controller",
         "imgUrl": "",
         "text": "Example app with GearVR"
+    },
+
+    "vr":{
+        "title":"Live monument",
+        "imgUrl": "",
+        "text": "App"
     }
 }

+ 33 - 1
support/client/lib/vwf.js

@@ -326,6 +326,18 @@
                      "vwf/model/aframe/addon/aframe-interpolation": {
                         deps: [ "vwf/model/aframe/aframe-master" ]
                     },
+                    "vwf/model/aframe/addon/aframe-gamepad-controls.min": {
+                        deps: [ "vwf/model/aframe/aframe-master" ]
+                    },
+                    "vwf/model/aframe/addon/SkyShader": {
+                        deps: [ "vwf/model/aframe/aframe-master" ]
+                    },
+                    "vwf/model/aframe/addon/monument-app": {
+                        deps: [ "vwf/model/aframe/addon/SkyShader" ]
+                    },
+                    "vwf/model/aframe/addon/monument-app": {
+                        deps: [ "vwf/model/aframe/aframe-master" ]
+                    },
                 }
             };
 
@@ -372,11 +384,25 @@
 
                 { library: "vwf/model/ohm", active: true },
               
+               
+
+                { library: "vwf/model/aframe/addon/monument-app", 
+                linkedLibraries: [ "vwf/model/aframe/addon/SkyShader" ], 
+                active: false 
+            },
+
                   { library: "vwf/model/aframe", 
                     linkedLibraries: [ "vwf/model/aframe/aframe-master",
-                    "vwf/model/aframe/addon/aframe-interpolation" ], 
+                    "vwf/model/aframe/addon/aframe-interpolation",
+                    "vwf/model/aframe/addon/SkyShader",
+                    "vwf/model/aframe/addon/monument-app",
+                    "vwf/model/aframe/addon/aframe-gamepad-controls.min"
+                 ], 
                     active: false 
                 },
+
+                
+
                 { library: "vwf/model/aframeComponent", active: true },
 
 
@@ -427,6 +453,12 @@
                  { library: "vwf/view/aframe", active: false },
                 { library: "vwf/model/aframe/aframe-master", active: false },
                 { library: "vwf/model/aframe/addon/aframe-interpolation", active: false },
+                { library: "vwf/model/aframe/addon/SkyShader", active: false },
+                { library: "vwf/model/aframe/addon/monument-app", active: false },
+                { library: "vwf/model/aframe/addon/aframe-gamepad-controls.min", active: false },
+                
+              
+
                 { library: "vwf/view/aframeComponent", active: true },
 
                 { library: "vwf/view/kineticjs", active: false },

+ 29 - 0
support/client/lib/vwf/model/aframe.js

@@ -465,6 +465,22 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
                     }
                 }
 
+                if (value === undefined && aframeObject.nodeName == "A-GLTF-MODEL") {
+                    value = propertyValue;
+
+                    switch (propertyName) {
+
+                        case "src":
+                            aframeObject.setAttribute('src', propertyValue);
+                            break;
+
+
+                        default:
+                            value = undefined;
+                            break;
+                    }
+                }
+
                 if (value === undefined && aframeObject.nodeName == "A-COLLADA-MODEL") {
                     value = propertyValue;
 
@@ -832,6 +848,17 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
                     }
                 }
 
+                if (value === undefined && aframeObject.nodeName == "A-GLTF-MODEL") {
+                    
+                                        switch (propertyName) {
+                                            case "src":
+                                                value = aframeObject.getAttribute('src');
+                                                break;
+                                        }
+                                    }
+
+
+
             }
 
             if (value !== undefined) {
@@ -870,6 +897,8 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
             aframeObj = document.createElement('a-text');
         } else if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/acolladamodel.vwf")) {
             aframeObj = document.createElement('a-collada-model');
+        } else if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/agltfmodel.vwf")) {
+            aframeObj = document.createElement('a-gltf-model');
         } else if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/asphere.vwf")) {
             aframeObj = document.createElement('a-sphere');
         } else if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/aanimation.vwf")) {

+ 226 - 0
support/client/lib/vwf/model/aframe/addon/SkyShader.js

@@ -0,0 +1,226 @@
+/**
+ * @author zz85 / https://github.com/zz85
+ *
+ * Based on "A Practical Analytic Model for Daylight"
+ * aka The Preetham Model, the de facto standard analytic skydome model
+ * http://www.cs.utah.edu/~shirley/papers/sunsky/sunsky.pdf
+ *
+ * First implemented by Simon Wallner
+ * http://www.simonwallner.at/projects/atmospheric-scattering
+ *
+ * Improved by Martin Upitis
+ * http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR
+ *
+ * Three.js integration by zz85 http://twitter.com/blurspline
+*/
+
+THREE.Sky = function () {
+
+	var skyShader = THREE.Sky.SkyShader;
+
+	var skyUniforms = THREE.UniformsUtils.clone( skyShader.uniforms );
+
+	var skyMat = new THREE.ShaderMaterial( {
+		fragmentShader: skyShader.fragmentShader,
+		vertexShader: skyShader.vertexShader,
+		uniforms: skyUniforms,
+		side: THREE.BackSide
+	} );
+
+	var skyGeo = new THREE.SphereBufferGeometry( 5000, 32, 15 );
+	var skyMesh = new THREE.Mesh( skyGeo, skyMat );
+
+	// Expose variables
+	this.mesh = skyMesh;
+	this.uniforms = skyUniforms;
+
+};
+
+THREE.Sky.SkyShader = {
+
+	uniforms: {
+		luminance: { value: 1 },
+		turbidity: { value: 2 },
+		rayleigh: { value: 1 },
+		mieCoefficient: { value: 0.005 },
+		mieDirectionalG: { value: 0.8 },
+		sunPosition: { value: new THREE.Vector3() }
+	},
+
+	vertexShader: [
+		'uniform vec3 sunPosition;',
+		'uniform float rayleigh;',
+		'uniform float turbidity;',
+		'uniform float mieCoefficient;',
+
+		'varying vec3 vWorldPosition;',
+		'varying vec3 vSunDirection;',
+		'varying float vSunfade;',
+		'varying vec3 vBetaR;',
+		'varying vec3 vBetaM;',
+		'varying float vSunE;',
+
+		'const vec3 up = vec3( 0.0, 1.0, 0.0 );',
+
+		// constants for atmospheric scattering
+		'const float e = 2.71828182845904523536028747135266249775724709369995957;',
+		'const float pi = 3.141592653589793238462643383279502884197169;',
+
+		// wavelength of used primaries, according to preetham
+		'const vec3 lambda = vec3( 680E-9, 550E-9, 450E-9 );',
+		// this pre-calcuation replaces older TotalRayleigh(vec3 lambda) function:
+		// (8.0 * pow(pi, 3.0) * pow(pow(n, 2.0) - 1.0, 2.0) * (6.0 + 3.0 * pn)) / (3.0 * N * pow(lambda, vec3(4.0)) * (6.0 - 7.0 * pn))
+		'const vec3 totalRayleigh = vec3( 5.804542996261093E-6, 1.3562911419845635E-5, 3.0265902468824876E-5 );',
+
+		// mie stuff
+		// K coefficient for the primaries
+		'const float v = 4.0;',
+		'const vec3 K = vec3( 0.686, 0.678, 0.666 );',
+		// MieConst = pi * pow( ( 2.0 * pi ) / lambda, vec3( v - 2.0 ) ) * K
+		'const vec3 MieConst = vec3( 1.8399918514433978E14, 2.7798023919660528E14, 4.0790479543861094E14 );',
+
+		// earth shadow hack
+		// cutoffAngle = pi / 1.95;
+		'const float cutoffAngle = 1.6110731556870734;',
+		'const float steepness = 1.5;',
+		'const float EE = 1000.0;',
+
+		'float sunIntensity( float zenithAngleCos ) {',
+		'	zenithAngleCos = clamp( zenithAngleCos, -1.0, 1.0 );',
+		'	return EE * max( 0.0, 1.0 - pow( e, -( ( cutoffAngle - acos( zenithAngleCos ) ) / steepness ) ) );',
+		'}',
+
+		'vec3 totalMie( float T ) {',
+		'	float c = ( 0.2 * T ) * 10E-18;',
+		'	return 0.434 * c * MieConst;',
+		'}',
+
+		'void main() {',
+
+		'	vec4 worldPosition = modelMatrix * vec4( position, 1.0 );',
+		'	vWorldPosition = worldPosition.xyz;',
+
+		'	gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',
+
+		'	vSunDirection = normalize( sunPosition );',
+
+		'	vSunE = sunIntensity( dot( vSunDirection, up ) );',
+
+		'	vSunfade = 1.0 - clamp( 1.0 - exp( ( sunPosition.y / 450000.0 ) ), 0.0, 1.0 );',
+
+		'	float rayleighCoefficient = rayleigh - ( 1.0 * ( 1.0 - vSunfade ) );',
+
+		// extinction (absorbtion + out scattering)
+		// rayleigh coefficients
+		'	vBetaR = totalRayleigh * rayleighCoefficient;',
+
+		// mie coefficients
+		'	vBetaM = totalMie( turbidity ) * mieCoefficient;',
+
+		'}'
+	].join( '\n' ),
+
+	fragmentShader: [
+		'varying vec3 vWorldPosition;',
+		'varying vec3 vSunDirection;',
+		'varying float vSunfade;',
+		'varying vec3 vBetaR;',
+		'varying vec3 vBetaM;',
+		'varying float vSunE;',
+
+		'uniform float luminance;',
+		'uniform float mieDirectionalG;',
+
+		'const vec3 cameraPos = vec3( 0.0, 0.0, 0.0 );',
+
+		// constants for atmospheric scattering
+		'const float pi = 3.141592653589793238462643383279502884197169;',
+
+		'const float n = 1.0003;', // refractive index of air
+		'const float N = 2.545E25;', // number of molecules per unit volume for air at
+									// 288.15K and 1013mb (sea level -45 celsius)
+
+		// optical length at zenith for molecules
+		'const float rayleighZenithLength = 8.4E3;',
+		'const float mieZenithLength = 1.25E3;',
+		'const vec3 up = vec3( 0.0, 1.0, 0.0 );',
+		// 66 arc seconds -> degrees, and the cosine of that
+		'const float sunAngularDiameterCos = 0.999956676946448443553574619906976478926848692873900859324;',
+
+		// 3.0 / ( 16.0 * pi )
+		'const float THREE_OVER_SIXTEENPI = 0.05968310365946075;',
+		// 1.0 / ( 4.0 * pi )
+		'const float ONE_OVER_FOURPI = 0.07957747154594767;',
+
+		'float rayleighPhase( float cosTheta ) {',
+		'	return THREE_OVER_SIXTEENPI * ( 1.0 + pow( cosTheta, 2.0 ) );',
+		'}',
+
+		'float hgPhase( float cosTheta, float g ) {',
+		'	float g2 = pow( g, 2.0 );',
+		'	float inverse = 1.0 / pow( 1.0 - 2.0 * g * cosTheta + g2, 1.5 );',
+		'	return ONE_OVER_FOURPI * ( ( 1.0 - g2 ) * inverse );',
+		'}',
+
+		// Filmic ToneMapping http://filmicgames.com/archives/75
+		'const float A = 0.15;',
+		'const float B = 0.50;',
+		'const float C = 0.10;',
+		'const float D = 0.20;',
+		'const float E = 0.02;',
+		'const float F = 0.30;',
+
+		'const float whiteScale = 1.0748724675633854;', // 1.0 / Uncharted2Tonemap(1000.0)
+
+		'vec3 Uncharted2Tonemap( vec3 x ) {',
+		'	return ( ( x * ( A * x + C * B ) + D * E ) / ( x * ( A * x + B ) + D * F ) ) - E / F;',
+		'}',
+
+
+		'void main() {',
+		// optical length
+		// cutoff angle at 90 to avoid singularity in next formula.
+		'	float zenithAngle = acos( max( 0.0, dot( up, normalize( vWorldPosition - cameraPos ) ) ) );',
+		'	float inverse = 1.0 / ( cos( zenithAngle ) + 0.15 * pow( 93.885 - ( ( zenithAngle * 180.0 ) / pi ), -1.253 ) );',
+		'	float sR = rayleighZenithLength * inverse;',
+		'	float sM = mieZenithLength * inverse;',
+
+		// combined extinction factor
+		'	vec3 Fex = exp( -( vBetaR * sR + vBetaM * sM ) );',
+
+		// in scattering
+		'	float cosTheta = dot( normalize( vWorldPosition - cameraPos ), vSunDirection );',
+
+		'	float rPhase = rayleighPhase( cosTheta * 0.5 + 0.5 );',
+		'	vec3 betaRTheta = vBetaR * rPhase;',
+
+		'	float mPhase = hgPhase( cosTheta, mieDirectionalG );',
+		'	vec3 betaMTheta = vBetaM * mPhase;',
+
+		'	vec3 Lin = pow( vSunE * ( ( betaRTheta + betaMTheta ) / ( vBetaR + vBetaM ) ) * ( 1.0 - Fex ), vec3( 1.5 ) );',
+		'	Lin *= mix( vec3( 1.0 ), pow( vSunE * ( ( betaRTheta + betaMTheta ) / ( vBetaR + vBetaM ) ) * Fex, vec3( 1.0 / 2.0 ) ), clamp( pow( 1.0 - dot( up, vSunDirection ), 5.0 ), 0.0, 1.0 ) );',
+
+		// nightsky
+		'	vec3 direction = normalize( vWorldPosition - cameraPos );',
+		'	float theta = acos( direction.y ); // elevation --> y-axis, [-pi/2, pi/2]',
+		'	float phi = atan( direction.z, direction.x ); // azimuth --> x-axis [-pi/2, pi/2]',
+		'	vec2 uv = vec2( phi, theta ) / vec2( 2.0 * pi, pi ) + vec2( 0.5, 0.0 );',
+		'	vec3 L0 = vec3( 0.1 ) * Fex;',
+
+		// composition + solar disc
+		'	float sundisk = smoothstep( sunAngularDiameterCos, sunAngularDiameterCos + 0.00002, cosTheta );',
+		'	L0 += ( vSunE * 19000.0 * Fex ) * sundisk;',
+
+		'	vec3 texColor = ( Lin + L0 ) * 0.04 + vec3( 0.0, 0.0003, 0.00075 );',
+
+		'	vec3 curr = Uncharted2Tonemap( ( log2( 2.0 / pow( luminance, 4.0 ) ) ) * texColor );',
+		'	vec3 color = curr * whiteScale;',
+
+		'	vec3 retColor = pow( color, vec3( 1.0 / ( 1.2 + ( 1.2 * vSunfade ) ) ) );',
+
+		'	gl_FragColor = vec4( retColor, 1.0 );',
+
+		'}'
+	].join( '\n' )
+
+};

+ 472 - 0
support/client/lib/vwf/model/aframe/addon/aframe-gamepad-controls.js

@@ -0,0 +1,472 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+	// Browser distrubution of the A-Frame component.
+	(function (AFRAME) {
+	  if (!AFRAME) {
+	    console.error('Component attempted to register before AFRAME was available.');
+	    return;
+	  }
+
+	  (AFRAME.aframeCore || AFRAME).registerComponent('gamepad-controls', __webpack_require__(1));
+
+	}(window.AFRAME));
+
+
+/***/ },
+/* 1 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * Gamepad controls for A-Frame.
+	 *
+	 * For more information about the Gamepad API, see:
+	 * https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API/Using_the_Gamepad_API
+	 */
+
+	var GamepadButton = __webpack_require__(2),
+	    GamepadButtonEvent = __webpack_require__(3);
+
+	var MAX_DELTA = 200, // ms
+	    PI_2 = Math.PI / 2;
+
+	var JOYSTICK_EPS = 0.2;
+
+	module.exports = {
+
+	  /*******************************************************************
+	   * Statics
+	   */
+
+	  GamepadButton: GamepadButton,
+
+	  /*******************************************************************
+	   * Schema
+	   */
+
+	  schema: {
+	    // Controller 0-3
+	    controller:        { default: 0, oneOf: [0, 1, 2, 3] },
+
+	    // Enable/disable features
+	    enabled:           { default: true },
+	    movementEnabled:   { default: true },
+	    lookEnabled:       { default: true },
+	    flyEnabled:        { default: false },
+	    invertAxisY:       { default: false },
+
+	    // Constants
+	    easing:            { default: 20 },
+	    acceleration:      { default: 65 },
+	    sensitivity:       { default: 0.04 },
+
+	    // Control axes
+	    pitchAxis:         { default: 'x', oneOf: [ 'x', 'y', 'z' ] },
+	    yawAxis:           { default: 'y', oneOf: [ 'x', 'y', 'z' ] },
+	    rollAxis:          { default: 'z', oneOf: [ 'x', 'y', 'z' ] },
+
+	    // Debugging
+	    debug:             { default: false }
+	  },
+
+	  /*******************************************************************
+	   * Core
+	   */
+
+	  /**
+	   * Called once when component is attached. Generally for initial setup.
+	   */
+	  init: function () {
+	    // Movement
+	    this.velocity = new THREE.Vector3(0, 0, 0);
+	    this.direction = new THREE.Vector3(0, 0, 0);
+
+	    // Rotation
+	    this.pitch = new THREE.Object3D();
+	    this.yaw = new THREE.Object3D();
+	    this.yaw.position.y = 10;
+	    this.yaw.add(this.pitch);
+
+	    // Button state
+	    this.buttons = {};
+
+	    if (!this.getGamepad()) {
+	      console.warn(
+	        'Gamepad #%d not found. Connect controller and press any button to continue.',
+	        this.data.controller
+	      );
+	    }
+	  },
+
+	  /**
+	   * Called on each iteration of main render loop.
+	   */
+	  tick: function (t, dt) {
+	    this.updateRotation(dt);
+	    this.updatePosition(dt);
+	    this.updateButtonState();
+	  },
+
+	  /*******************************************************************
+	   * Movement
+	   */
+
+	  updatePosition: function (dt) {
+	    var data = this.data;
+	    var acceleration = data.acceleration;
+	    var easing = data.easing;
+	    var velocity = this.velocity;
+	    var rollAxis = data.rollAxis;
+	    var pitchAxis = data.pitchAxis;
+	    var el = this.el;
+	    var gamepad = this.getGamepad();
+
+	    // If data has changed or FPS is too low
+	    // we reset the velocity
+	    if (dt > MAX_DELTA) {
+	      velocity[rollAxis] = 0;
+	      velocity[pitchAxis] = 0;
+	      return;
+	    }
+
+	    velocity[rollAxis] -= velocity[rollAxis] * easing * dt / 1000;
+	    velocity[pitchAxis] -= velocity[pitchAxis] * easing * dt / 1000;
+
+	    var position = el.getAttribute('position');
+
+	    if (data.enabled && data.movementEnabled && gamepad) {
+	      var dpad = this.getDpad(),
+	          inputX = dpad.x || this.getJoystick(0).x,
+	          inputY = dpad.y || this.getJoystick(0).y;
+	      if (Math.abs(inputX) > JOYSTICK_EPS) {
+	        velocity[pitchAxis] += inputX * acceleration * dt / 1000;
+	      }
+	      if (Math.abs(inputY) > JOYSTICK_EPS) {
+	        velocity[rollAxis] += inputY * acceleration * dt / 1000;
+	      }
+	    }
+
+	    var movementVector = this.getMovementVector(dt);
+
+	    el.object3D.translateX(movementVector.x);
+	    el.object3D.translateY(movementVector.y);
+	    el.object3D.translateZ(movementVector.z);
+
+	    el.setAttribute('position', {
+	      x: position.x + movementVector.x,
+	      y: position.y + movementVector.y,
+	      z: position.z + movementVector.z
+	    });
+	  },
+
+	  getMovementVector: function (dt) {
+	    if (this._getMovementVector) {
+	      return this._getMovementVector(dt);
+	    }
+
+	    var euler = new THREE.Euler(0, 0, 0, 'YXZ'),
+	        rotation = new THREE.Vector3();
+
+	    this._getMovementVector = function (dt) {
+	      rotation.copy(this.el.getAttribute('rotation'));
+	      this.direction.copy(this.velocity);
+	      this.direction.multiplyScalar(dt / 1000);
+	      if (!rotation) { return this.direction; }
+	      if (!this.data.flyEnabled) { rotation.x = 0; }
+	      euler.set(
+	        THREE.Math.degToRad(rotation.x),
+	        THREE.Math.degToRad(rotation.y),
+	        0
+	      );
+	      this.direction.applyEuler(euler);
+	      return this.direction;
+	    };
+
+	    return this._getMovementVector(dt);
+	  },
+
+	  /*******************************************************************
+	   * Rotation
+	   */
+
+	  updateRotation: function () {
+	    if (this._updateRotation) {
+	      return this._updateRotation();
+	    }
+
+	    var initialRotation = new THREE.Vector3(),
+	        prevInitialRotation = new THREE.Vector3(),
+	        prevFinalRotation = new THREE.Vector3();
+
+	    var tCurrent,
+	        tLastLocalActivity = 0,
+	        tLastExternalActivity = 0;
+
+	    var ROTATION_EPS = 0.0001,
+	        DEBOUNCE = 500;
+
+	    this._updateRotation = function () {
+	      if (!this.data.lookEnabled || !this.getGamepad()) {
+	        return;
+	      }
+
+	      tCurrent = Date.now();
+	      initialRotation.copy(this.el.getAttribute('rotation') || initialRotation);
+
+	      // If initial rotation for this frame is different from last frame, and
+	      // doesn't match last gamepad state, assume an external component is
+	      // active on this element.
+	      if (initialRotation.distanceToSquared(prevInitialRotation) > ROTATION_EPS
+	          && initialRotation.distanceToSquared(prevFinalRotation) > ROTATION_EPS) {
+	        prevInitialRotation.copy(initialRotation);
+	        tLastExternalActivity = tCurrent;
+	        return;
+	      }
+
+	      prevInitialRotation.copy(initialRotation);
+
+	      // If external controls have been active in last 500ms, wait.
+	      if (tCurrent - tLastExternalActivity < DEBOUNCE) {
+	        return;
+	      }
+
+	      var lookVector = this.getJoystick(1);
+	      if (Math.abs(lookVector.x) <= JOYSTICK_EPS) lookVector.x = 0;
+	      if (Math.abs(lookVector.y) <= JOYSTICK_EPS) lookVector.y = 0;
+	      if (this.data.invertAxisY) lookVector.y = -lookVector.y;
+
+	      // If external controls have been active more recently than gamepad,
+	      // and gamepad hasn't moved, don't overwrite the existing rotation.
+	      if (tLastExternalActivity > tLastLocalActivity && !lookVector.lengthSq()) {
+	        return;
+	      }
+
+	      lookVector.multiplyScalar(this.data.sensitivity);
+	      this.yaw.rotation.y -= lookVector.x;
+	      this.pitch.rotation.x -= lookVector.y;
+	      this.pitch.rotation.x = Math.max(-PI_2, Math.min(PI_2, this.pitch.rotation.x));
+
+	      this.el.setAttribute('rotation', {
+	        x: THREE.Math.radToDeg(this.pitch.rotation.x),
+	        y: THREE.Math.radToDeg(this.yaw.rotation.y),
+	        z: 0
+	      });
+	      prevFinalRotation.copy(this.el.getAttribute('rotation'));
+	      tLastLocalActivity = tCurrent;
+	    };
+
+	    return this._updateRotation();
+	  },
+
+	  /*******************************************************************
+	   * Button events
+	   */
+
+	  updateButtonState: function () {
+	    var gamepad = this.getGamepad();
+	    if (this.data.enabled && gamepad) {
+
+	      // Fire DOM events for button state changes.
+	      for (var i = 0; i < gamepad.buttons.length; i++) {
+	        if (gamepad.buttons[i].pressed && !this.buttons[i]) {
+	          this.emit(new GamepadButtonEvent('gamepadbuttondown', i, gamepad.buttons[i]));
+	        } else if (!gamepad.buttons[i].pressed && this.buttons[i]) {
+	          this.emit(new GamepadButtonEvent('gamepadbuttonup', i, gamepad.buttons[i]));
+	        }
+	        this.buttons[i] = gamepad.buttons[i].pressed;
+	      }
+
+	    } else if (Object.keys(this.buttons)) {
+	      // Reset state if controls are disabled or controller is lost.
+	      this.buttons = {};
+	    }
+	  },
+
+	  emit: function (event) {
+	    // Emit original event.
+	    this.el.emit(event.type, event);
+
+	    // Emit convenience event, identifying button index.
+	    this.el.emit(
+	      event.type + ':' + event.index,
+	      new GamepadButtonEvent(event.type, event.index, event)
+	    );
+	  },
+
+	  /*******************************************************************
+	   * Gamepad state
+	   */
+
+	  /**
+	   * Returns the Gamepad instance attached to the component. If connected,
+	   * a proxy-controls component may provide access to Gamepad input from a
+	   * remote device.
+	   *
+	   * @return {Gamepad}
+	   */
+	  getGamepad: function () {
+	    var localGamepad = navigator.getGamepads
+	          && navigator.getGamepads()[this.data.controller],
+	        proxyControls = this.el.sceneEl.components['proxy-controls'],
+	        proxyGamepad = proxyControls && proxyControls.isConnected()
+	          && proxyControls.getGamepad(this.data.controller);
+	    return proxyGamepad || localGamepad;
+	  },
+
+	  /**
+	   * Returns the state of the given button.
+	   * @param  {number} index The button (0-N) for which to find state.
+	   * @return {GamepadButton}
+	   */
+	  getButton: function (index) {
+	    return this.getGamepad().buttons[index];
+	  },
+
+	  /**
+	   * Returns state of the given axis. Axes are labelled 0-N, where 0-1 will
+	   * represent X/Y on the first joystick, and 2-3 X/Y on the second.
+	   * @param  {number} index The axis (0-N) for which to find state.
+	   * @return {number} On the interval [-1,1].
+	   */
+	  getAxis: function (index) {
+	    return this.getGamepad().axes[index];
+	  },
+
+	  /**
+	   * Returns the state of the given joystick (0 or 1) as a THREE.Vector2.
+	   * @param  {number} id The joystick (0, 1) for which to find state.
+	   * @return {THREE.Vector2}
+	   */
+	  getJoystick: function (index) {
+	    var gamepad = this.getGamepad();
+	    switch (index) {
+	      case 0: return new THREE.Vector2(gamepad.axes[0], gamepad.axes[1]);
+	      case 1: return new THREE.Vector2(gamepad.axes[2], gamepad.axes[3]);
+	      default: throw new Error('Unexpected joystick index "%d".', index);
+	    }
+	  },
+
+	  /**
+	   * Returns the state of the dpad as a THREE.Vector2.
+	   * @return {THREE.Vector2}
+	   */
+	  getDpad: function () {
+	    var gamepad = this.getGamepad();
+	    if (!gamepad.buttons[GamepadButton.DPAD_RIGHT]) {
+	      return new THREE.Vector2();
+	    }
+	    return new THREE.Vector2(
+	      (gamepad.buttons[GamepadButton.DPAD_RIGHT].pressed ? 1 : 0)
+	      + (gamepad.buttons[GamepadButton.DPAD_LEFT].pressed ? -1 : 0),
+	      (gamepad.buttons[GamepadButton.DPAD_UP].pressed ? -1 : 0)
+	      + (gamepad.buttons[GamepadButton.DPAD_DOWN].pressed ? 1 : 0)
+	    );
+	  },
+
+	  /**
+	   * Returns true if the gamepad is currently connected to the system.
+	   * @return {boolean}
+	   */
+	  isConnected: function () {
+	    var gamepad = this.getGamepad();
+	    return !!(gamepad && gamepad.connected);
+	  },
+
+	  /**
+	   * Returns a string containing some information about the controller. Result
+	   * may vary across browsers, for a given controller.
+	   * @return {string}
+	   */
+	  getID: function () {
+	    return this.getGamepad().id;
+	  }
+	};
+
+
+/***/ },
+/* 2 */
+/***/ function(module, exports) {
+
+	module.exports = Object.assign(function GamepadButton () {}, {
+		FACE_1: 0,
+		FACE_2: 1,
+		FACE_3: 2,
+		FACE_4: 3,
+
+		L_SHOULDER_1: 4,
+		R_SHOULDER_1: 5,
+		L_SHOULDER_2: 6,
+		R_SHOULDER_2: 7,
+
+		SELECT: 8,
+		START: 9,
+
+		DPAD_UP: 12,
+		DPAD_DOWN: 13,
+		DPAD_LEFT: 14,
+		DPAD_RIGHT: 15,
+
+		VENDOR: 16,
+	});
+
+
+/***/ },
+/* 3 */
+/***/ function(module, exports) {
+
+	function GamepadButtonEvent (type, index, details) {
+	  this.type = type;
+	  this.index = index;
+	  this.pressed = details.pressed;
+	  this.value = details.value;
+	}
+
+	module.exports = GamepadButtonEvent;
+
+
+/***/ }
+/******/ ]);

File diff suppressed because it is too large
+ 0 - 0
support/client/lib/vwf/model/aframe/addon/aframe-gamepad-controls.min.js


+ 169 - 0
support/client/lib/vwf/model/aframe/addon/monument-app.js

@@ -0,0 +1,169 @@
+if (typeof AFRAME === 'undefined') {
+    throw new Error('Component attempted to register before AFRAME was available.');
+  }
+AFRAME.registerComponent('envmap', {
+    
+        /**
+         * Creates a new THREE.ShaderMaterial using the two shaders defined
+         * in vertex.glsl and fragment.glsl.
+         */
+        init: function () {
+            const data = this.data;
+    
+            //this.applyToMesh();
+            this.el.addEventListener('model-loaded', () => this.applyToMesh());
+        },
+        /**
+         * Update the ShaderMaterial when component data changes.
+         */
+        update: function () {
+    
+        },
+    
+        getEnvMap: function () {
+    
+            var path = './assets/textures/skybox2/';
+            var format = '.jpg';
+            var urls = [
+                path + 'px' + format, path + 'nx' + format,
+                path + 'py' + format, path + 'ny' + format,
+                path + 'pz' + format, path + 'nz' + format
+            ];
+    
+            envMap = new THREE.CubeTextureLoader().load(urls);
+            envMap.format = THREE.RGBFormat;
+            return envMap;
+    
+        },
+    
+        /**
+         * Apply the material to the current entity.
+         */
+        applyToMesh: function () {
+    
+            const mesh = this.el.getObject3D('mesh');
+            //var scene = mesh;
+            var envMap = this.getEnvMap();
+    
+    
+            mesh.traverse(function (node) {
+    
+                if (node.material) {
+    
+                    node.material.side = THREE.BackSide;
+                    node.material.needsUpdate = true;
+                    //side = THREE.DoubleSide; break;
+    
+                }
+    
+            });
+    
+            mesh.traverse(function (node) {
+    
+                if (node.material && (node.material.isMeshStandardMaterial ||
+                    (node.material.isShaderMaterial && node.material.envMap !== undefined))) {
+    
+                    node.material.envMap = envMap;
+                    node.material.needsUpdate = true;
+    
+    
+                }
+    
+            });
+    
+            // const mesh = this.el.getObject3D('mesh');
+            // if (mesh) {
+            //   mesh.material = this.material;
+            // }
+    
+        },
+        /**
+         * On each frame, update the 'time' uniform in the shaders.
+         */
+        tick: function (t) {
+    
+        }
+    })
+
+
+    //https://threejs.org/examples/webgl_shaders_sky.html
+
+AFRAME.registerComponent('skyshader', {
+    
+    
+        init: function () {
+    
+            let sunSphereEl = document.querySelector('a-scene').querySelector('#sun');
+            this.sunSphere = sunSphereEl.object3D;
+    
+            this.sky = new THREE.Sky();
+            let scene = this.el.sceneEl;
+    
+    
+            let effectController = {
+                turbidity: 5,
+                rayleigh: 2,
+                mieCoefficient: 0.005,
+                mieDirectionalG: 0.8,
+                luminance: 1,
+                inclination: 0, // elevation / inclination
+                azimuth: 0.25, // Facing front,
+                sun: ! true
+            };
+    
+            let uniforms = this.sky.uniforms;
+            uniforms.turbidity.value = effectController.turbidity;
+            uniforms.rayleigh.value = effectController.rayleigh;
+            uniforms.luminance.value = effectController.luminance;
+            uniforms.mieCoefficient.value = effectController.mieCoefficient;
+            uniforms.mieDirectionalG.value = effectController.mieDirectionalG;
+    
+            this.el.setObject3D('mesh', this.sky.mesh);
+    
+            let distance = 400000;
+    
+            var theta = Math.PI * (effectController.inclination - 0.5);
+            var phi = 2 * Math.PI * (effectController.azimuth - 0.5);
+    
+            this.sunSphere.position.x = distance * Math.cos(phi);
+            this.sunSphere.position.y = distance * Math.sin(phi) * Math.sin(theta);
+            this.sunSphere.position.z = distance * Math.sin(phi) * Math.cos(theta);
+    
+            this.sunSphere.visible = effectController.sun;
+            this.sky.uniforms.sunPosition.value.copy(this.sunSphere.position);
+    
+    
+        },
+    
+        update: function () {
+    
+        },
+    
+        tick: function (t) {
+    
+        }
+    })
+    
+    AFRAME.registerComponent('sun', {
+    
+    
+        init: function () {
+    
+            this.sunSphere = new THREE.Mesh(
+                new THREE.SphereBufferGeometry(20000, 16, 8),
+                new THREE.MeshBasicMaterial({ color: 0xffffff })
+            );
+            this.sunSphere.position.y = - 700000;
+            this.sunSphere.visible = true;
+    
+            this.el.setObject3D('mesh', this.sunSphere);
+    
+        },
+    
+        update: function () {
+        },
+    
+        tick: function (t) {
+        }
+    })
+    

+ 29 - 0
support/client/lib/vwf/model/aframeComponent.js

@@ -610,6 +610,35 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 
         }
 
+        if (self.state.isComponentClass(protos, "http://vwf.example.com/aframe/app-envmap-component.vwf")) {
+            
+ 
+                // aframeObj.el.setAttribute(node.type, {});
+             aframeObj.compName = "envmap";
+             aframeObj.el.setAttribute(aframeObj.compName, {});
+ 
+         }
+
+         if (self.state.isComponentClass(protos, "http://vwf.example.com/aframe/app-sun-component.vwf")) {
+            
+ 
+                // aframeObj.el.setAttribute(node.type, {});
+             aframeObj.compName = "sun";
+             aframeObj.el.setAttribute('id', "sun");
+             aframeObj.el.setAttribute(aframeObj.compName, {});
+ 
+         }
+
+         if (self.state.isComponentClass(protos, "http://vwf.example.com/aframe/app-skyshader-component.vwf")) {
+            
+ 
+                // aframeObj.el.setAttribute(node.type, {});
+             aframeObj.compName = "skyshader";
+             aframeObj.el.setAttribute(aframeObj.compName, {});
+ 
+         }
+
+
         if (self.state.isComponentClass(protos, "http://vwf.example.com/aframe/gearvr-controlsComponent.vwf")) {
             
  

+ 1 - 0
support/client/lib/vwf/view/aframe.js

@@ -195,6 +195,7 @@ define(["module", "vwf/view"], function (module, view) {
         controlEl.setAttribute('id', 'avatarControl');
         controlEl.setAttribute('wasd-controls', {});
         controlEl.setAttribute('look-controls', {});
+        controlEl.setAttribute('gamepad-controls', {});
         controlEl.setAttribute('camera', 'active', true);
         aScene.appendChild(controlEl);
 

+ 6 - 0
support/proxy/vwf.example.com/aframe/agltfmodel.vwf.yaml

@@ -0,0 +1,6 @@
+#https://aframe.io/docs/0.6.0/primitives/a-gltf-model.html
+--- 
+extends: http://vwf.example.com/aframe/aentity.vwf
+type: "a-gltf-model"
+properties:
+  src:

+ 5 - 0
support/proxy/vwf.example.com/aframe/app-envmap-component.vwf.yaml

@@ -0,0 +1,5 @@
+# Interpolation
+---
+extends: http://vwf.example.com/aframe/aentityComponent.vwf
+type: "component"
+properties:

+ 5 - 0
support/proxy/vwf.example.com/aframe/app-skyshader-component.vwf.yaml

@@ -0,0 +1,5 @@
+# Interpolation
+---
+extends: http://vwf.example.com/aframe/aentityComponent.vwf
+type: "component"
+properties:

+ 5 - 0
support/proxy/vwf.example.com/aframe/app-sun-component.vwf.yaml

@@ -0,0 +1,5 @@
+# Interpolation
+---
+extends: http://vwf.example.com/aframe/aentityComponent.vwf
+type: "component"
+properties:

Some files were not shown because too many files changed in this diff