forked from cityscreen/deep-webXR
-
Notifications
You must be signed in to change notification settings - Fork 0
/
model-viewer.html
136 lines (118 loc) Β· 5.48 KB
/
model-viewer.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"/>
<title>Model Viewer</title>
<link rel="stylesheet" type="text/css" href="./assets/css/style.css"/>
<!-- <script type="module" src="https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js"></script> -->
<!-- The following libraries and polyfills are recommended to maximize browser support -->
<!-- NOTE: you must adjust the paths as appropriate for your project -->
<!-- π¨ REQUIRED: Web Components polyfill to support Edge and Firefox < 63 -->
<script src="https://unpkg.com/@webcomponents/[email protected]/webcomponents-loader.js"></script>
<!-- π OPTIONAL: Intersection Observer polyfill for better performance in Safari and IE11 -->
<script src="https://unpkg.com/[email protected]/intersection-observer.js"></script>
<!-- π OPTIONAL: Resize Observer polyfill improves resize behavior in non-Chrome browsers -->
<script src="https://unpkg.com/[email protected]/dist/ResizeObserver.js"></script>
<!-- π OPTIONAL: The :focus-visible polyfill removes the focus ring for some input types -->
<script src="https://unpkg.com/[email protected]/dist/focus-visible.js" defer></script>
<style>
html{
height: 100%;
width: 100%;
}
body {
height: 100%;
width: 100%;
}
model-viewer{
height:90%;
width:100%;
}
</style>
</head>
<body>
<div class="control-buttons control-buttons-center">
<h1>Select Your Experience</h1>
<button id="3d-face-filter" class="3d-face-filter" type="button" title="3D Face Filter">3D Face Filter</button>
<button id="3d-model-viewer"class="3d-model-viewer" type="button" title="3D Model Viewer">3D Model Viewer</button>
</div>
<model-viewer
id="model-viewer"
src="./assets/models/NonnoAgenore_004.glb?mode=ar_preferred&browser_fallback_url=https://google.weareserver.it&link=https://google.weareserver.it/model-viewer.html&title=Nonno%20Agenore"
camera-controls
ar
ar-modes="scene-viewer webxr quick-look"
ar-scale="auto"
camera-orbit="1.056e-14deg 75deg 7.494m"
poster="./assets/models/NonnoAgenore.png"
alt="A 3D model of Nonno Agenore"
min-camera-orbit="auto auto 7.494m"
max-camera-orbit="auto auto auto"
auto-rotate min-field-of-view="45deg"
max-field-of-view="auto"
ios-src="./assets/models/NonnoAgenore_002.usdz"
shadow-intensity="1"
auto-rotate
magic-leap
data-js-focus-visible
>
<!-- ar-scale="auto/fixed" auto-rotate -->
<div class="progress-bar hide" slot="progress-bar">
<div class="update-bar"></div>
</div>
<button slot="ar-button" id="ar-button">
View in your space
</button>
<!-- <button slot="ar-button" style="background-color: white; border-radius: 4px; border: none; position: absolute; top: 16px; right: 16px; ">
π Activate AR
</button> -->
<div id="ar-prompt">
<img src="./assets/images/hand.png">
</div>
<div id="error" class="hide">AR is not supported on this device</div>
</model-viewer>
<!-- <canvas class="deepar" id="deepar-canvas" oncontextmenu="event.preventDefault()"></canvas>
<div id="loader-wrapper">
<span class="loader"></span></span>
</div> -->
<!-- π Include both scripts below to support all browsers! -->
<!-- Loads <model-viewer> for modern browsers: -->
<script type="module" src="https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js"></script>
<!-- Loads <model-viewer> for old browsers like IE11: -->
<script nomodule src="https://unpkg.com/@google/model-viewer/dist/model-viewer-legacy.js"></script>
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="./assets/js/select-experience.js"></script>
<script>
var canvasHeight = window.innerHeight;
var canvasWidth = window.innerWidth;
// desktop, the width of the canvas is 0.66 * window height and on mobile it's fullscreen
if (window.innerWidth > window.innerHeight) {
canvasWidth = Math.floor(window.innerHeight*0.66);
}
document.getElementById('model-viewer').style.height = canvasHeight;
document.getElementById('model-viewer').style.width = canvasWidth;
var intersectionObserver = new IntersectionObserver(function(entries) {
// If intersectionRatio is 0, the target is out of view
// and we do not need to do anything.
if (entries[0].intersectionRatio <= 0) return;
loadItems(10);
console.log('Loaded new items');
});
// start observing
//intersectionObserver.observe(document.querySelector('.scrollerFooter'));
// model-viewer error
document.querySelector("#model-viewer").addEventListener('ar-status', (event) => {
if(event.detail.status === 'failed'){
const error = document.querySelector("#error");
error.classList.remove('hide');
error.addEventListener('transitionend',(event) => {
error.classList.add('hide');
});
}
});
</script>
</body>
</html>