Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
GeoVistoogsi
AR
Commits
684d85be
Commit
684d85be
authored
3 months ago
by
Percen
Browse files
Options
Download
Email Patches
Plain Diff
Update public/index.html
parent
3ef070f9
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
public/index.html
+42
-29
public/index.html
with
42 additions
and
29 deletions
+42
-29
public/index.html
+
42
-
29
View file @
684d85be
...
@@ -28,8 +28,12 @@
...
@@ -28,8 +28,12 @@
let
models
=
{};
let
models
=
{};
let
reticle
;
let
reticle
;
let
currentModel
=
null
;
let
currentModel
=
null
;
let
scene
,
camera
,
hitTestSource
;
let
scene
;
let
placedModels
=
[];
// Array für platzierte Modelle
let
camera
;
let
hitTestSource
;
const
modelKeys
=
[
'
robot
'
,
'
flower
'
];
// Modell-Liste
let
modelIndex
=
0
;
async
function
activateXR
()
{
async
function
activateXR
()
{
const
canvas
=
document
.
createElement
(
'
canvas
'
);
const
canvas
=
document
.
createElement
(
'
canvas
'
);
...
@@ -70,7 +74,6 @@
...
@@ -70,7 +74,6 @@
const
viewerSpace
=
await
session
.
requestReferenceSpace
(
'
viewer
'
);
const
viewerSpace
=
await
session
.
requestReferenceSpace
(
'
viewer
'
);
hitTestSource
=
await
session
.
requestHitTestSource
({
space
:
viewerSpace
});
hitTestSource
=
await
session
.
requestHitTestSource
({
space
:
viewerSpace
});
session
.
addEventListener
(
'
select
'
,
placeModel
);
// Platzieren des Modells beim Tippen
session
.
requestAnimationFrame
(
onXRFrame
);
session
.
requestAnimationFrame
(
onXRFrame
);
// AR-Rendering
// AR-Rendering
...
@@ -94,8 +97,10 @@
...
@@ -94,8 +97,10 @@
reticle
.
visible
=
true
;
reticle
.
visible
=
true
;
reticle
.
position
.
set
(
hitPose
.
transform
.
position
.
x
,
hitPose
.
transform
.
position
.
y
,
hitPose
.
transform
.
position
.
z
);
reticle
.
position
.
set
(
hitPose
.
transform
.
position
.
x
,
hitPose
.
transform
.
position
.
y
,
hitPose
.
transform
.
position
.
z
);
reticle
.
updateMatrixWorld
(
true
);
reticle
.
updateMatrixWorld
(
true
);
}
else
{
reticle
.
visible
=
false
;
if
(
currentModel
)
{
currentModel
.
position
.
set
(
hitPose
.
transform
.
position
.
x
,
hitPose
.
transform
.
position
.
y
,
hitPose
.
transform
.
position
.
z
);
}
}
}
renderer
.
render
(
scene
,
camera
);
renderer
.
render
(
scene
,
camera
);
...
@@ -103,39 +108,47 @@
...
@@ -103,39 +108,47 @@
}
}
}
}
// Modell platzieren
// Swipe-Erkennung
function
placeModel
()
{
let
startX
=
0
;
if
(
reticle
.
visible
)
{
const
threshold
=
50
;
const
model
=
models
[
selectedModel
]?.
clone
();
if
(
model
)
{
model
.
position
.
copy
(
reticle
.
position
);
model
.
scale
.
set
(
0.5
,
0.5
,
0.5
);
// Optional: Größe anpassen
scene
.
add
(
model
);
placedModels
.
push
(
model
);
// Zum Array hinzufügen
}
}
}
// Swipe-Gesten
document
.
body
.
addEventListener
(
'
touchstart
'
,
(
e
)
=>
{
let
startX
=
0
,
endX
=
0
;
startX
=
e
.
touches
[
0
].
clientX
;
const
threshold
=
50
;
// Mindestdistanz für Swipe
});
document
.
body
.
addEventListener
(
'
touchstart
'
,
(
e
)
=>
startX
=
e
.
touches
[
0
].
clientX
);
document
.
body
.
addEventListener
(
'
touchend
'
,
(
e
)
=>
{
document
.
body
.
addEventListener
(
'
touchend
'
,
(
e
)
=>
{
endX
=
e
.
changedTouches
[
0
].
clientX
;
const
endX
=
e
.
changedTouches
[
0
].
clientX
;
if
(
Math
.
abs
(
endX
-
startX
)
>
threshold
)
{
const
deltaX
=
endX
-
startX
;
if
(
endX
>
startX
)
switchModel
(
'
next
'
);
// Swipe rechts
else
switchModel
(
'
previous
'
);
// Swipe links
if
(
Math
.
abs
(
deltaX
)
>
threshold
)
{
if
(
deltaX
>
0
)
{
switchModel
(
'
previous
'
);
}
else
{
switchModel
(
'
next
'
);
}
}
}
});
});
function
switchModel
(
direction
)
{
function
switchModel
(
direction
)
{
if
(
direction
===
'
next
'
)
selectedModel
=
selectedModel
===
'
robot
'
?
'
flower
'
:
'
robot
'
;
if
(
currentModel
)
{
else
if
(
direction
===
'
previous
'
)
selectedModel
=
selectedModel
===
'
robot
'
?
'
flower
'
:
'
robot
'
;
scene
.
remove
(
currentModel
);
console
.
log
(
"
Modell gewechselt zu:
"
,
selectedModel
);
}
if
(
direction
===
'
next
'
)
{
modelIndex
=
(
modelIndex
+
1
)
%
modelKeys
.
length
;
}
else
{
modelIndex
=
(
modelIndex
-
1
+
modelKeys
.
length
)
%
modelKeys
.
length
;
}
selectedModel
=
modelKeys
[
modelIndex
];
currentModel
=
models
[
selectedModel
]?.
clone
();
if
(
currentModel
)
{
currentModel
.
position
.
copy
(
reticle
.
position
);
scene
.
add
(
currentModel
);
console
.
log
(
`Modell gewechselt zu:
${
selectedModel
}
`
);
}
}
}
// AR starten
if
(
navigator
.
xr
)
{
if
(
navigator
.
xr
)
{
const
startButton
=
document
.
createElement
(
'
button
'
);
const
startButton
=
document
.
createElement
(
'
button
'
);
startButton
.
textContent
=
'
Start AR
'
;
startButton
.
textContent
=
'
Start AR
'
;
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment