Compare commits
12 Commits
423cd2590a
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 6cf5befe9d | |||
| da0adbdf3e | |||
| 839add7809 | |||
| 320d7ac7f3 | |||
| b07eef79e8 | |||
| 3fd3943133 | |||
| e31388f601 | |||
| e9215b634b | |||
| 6a320569bd | |||
| 99f628a12d | |||
| 68555de14c | |||
| 054f56105e |
@@ -26,7 +26,7 @@ jobs:
|
|||||||
- name: upload to pages
|
- name: upload to pages
|
||||||
run: |
|
run: |
|
||||||
curl -X PUT --fail \
|
curl -X PUT --fail \
|
||||||
https://pages.ct.cozytren.ch/sti-presentation \
|
https://pages.ct.cozytren.ch/m1s2-eng-presentation \
|
||||||
-T ./presentation.zip \
|
-T ./presentation.zip \
|
||||||
-H "Content-Type: application/zip" \
|
-H "Content-Type: application/zip" \
|
||||||
-H "Authorization: Pages ${{ secrets.GIT_PAGES_TOKEN }}"
|
-H "Authorization: Pages ${{ secrets.GIT_PAGES_TOKEN }}"
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# EN-Presentation
|
||||||
|
|
||||||
|
Uhhhhhh this is awkward - guess you can now see the "behind the scenes" of this *magnificent* presentation
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
- HTML: https://pages.ct.cozytren.ch/m1s2-eng-presentation
|
||||||
|
- PDF: https://pages.ct.cozytren.ch/m1s2-eng-presentation/presentation.pdf
|
||||||
|
|
||||||
|
## Toolchain
|
||||||
|
- Marp ecosystem for markdown presentation rendering
|
||||||
|
- MarpX for custom parsing logic + custom themes
|
||||||
|
- Gitea actions auto render & upload pipeline
|
||||||
|
After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 157 KiB |
|
After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 570 B After Width: | Height: | Size: 365 B |
|
After Width: | Height: | Size: 115 KiB |
|
Before Width: | Height: | Size: 216 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 138 KiB |
|
Before Width: | Height: | Size: 570 B After Width: | Height: | Size: 561 B |
|
Before Width: | Height: | Size: 157 KiB |
|
Before Width: | Height: | Size: 571 B After Width: | Height: | Size: 565 B |
|
Before Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 1.6 MiB |
@@ -1,3 +0,0 @@
|
|||||||
original video: https://www.youtube.com/watch?v=1l0wKk6q_ss
|
|
||||||
|
|
||||||
ffmpeg command to convert to gif: ffmpeg -ss START_TIME -to END_TIME -i input_video.mp4 -vf "fps=10,scale=320:-1:flags=lanczos" output.gif
|
|
||||||
|
After Width: | Height: | Size: 101 KiB |
@@ -1,14 +1,11 @@
|
|||||||
---
|
---
|
||||||
title: "Shifty: A Weight-Shifting Dynamic Passive Haptic Proxy
|
title: "Privacy by design: DIY Marp(X) AI presentations without sending data to third parties"
|
||||||
to Enhance Object Perception in Virtual Reality"
|
|
||||||
author: R.Viton
|
author: R.Viton
|
||||||
description: "Shifty: A Weight-Shifting Dynamic Passive Haptic Proxy
|
description: "Privacy by design: DIY Marp(X) AI presentations without sending data to third parties"
|
||||||
to Enhance Object Perception in Virtual Reality"
|
|
||||||
keywords: []
|
keywords: []
|
||||||
|
|
||||||
header: "Shifty: A Weight-Shifting Dynamic Passive Haptic Proxy
|
header: "Privacy by design: DIY Marp(X) AI presentations without sending data to third parties"
|
||||||
to Enhance Object Perception in Virtual Reality"
|
footer: "2026-06-24"
|
||||||
footer: "2026-05-26"
|
|
||||||
|
|
||||||
marp: true
|
marp: true
|
||||||
theme: gödel
|
theme: gödel
|
||||||
@@ -19,259 +16,173 @@ size: 16:9
|
|||||||
lang: de
|
lang: de
|
||||||
math: katex
|
math: katex
|
||||||
---
|
---
|
||||||
|
<style>
|
||||||
|
.inline-img {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: .5rem;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
<!-- _class: "title-academic" -->
|
<!-- _class: "title-academic" -->
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
<div class="title">Shifty: A Weight-Shifting Dynamic Passive Haptic Proxy
|
|
||||||
to Enhance Object Perception in Virtual Reality</div>
|
|
||||||
<div class="subtitle">Präsentation zum Paper von <i>A. Zenner</i> und <i>A. Krüger</i> (2017)</div>
|
|
||||||
<div class="author">Romane Viton</div>
|
|
||||||
<div class="date">2026-05-26</div>
|
|
||||||
<div class="organization">DFI-STI, htw saar</div>
|
|
||||||
|
|
||||||
---
|
|
||||||
# Fragerunde
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
* Wer hat schon VR getestet?
|
|
||||||
* Wie immersiv war die Erfahrung?
|
|
||||||
* Gab es haptisches Feedback?
|
|
||||||
* Wenn ja: wie wurde das implementiert?
|
|
||||||
|
|
||||||
---
|
|
||||||
# Was ist **haptisches Feedback** ?
|
|
||||||
|
|
||||||
* Nutzer:innen bekommen eine **taktile Rückmeldung**
|
|
||||||
* Kann **Immersion** weiter als "nur hören oder sehen" treiben
|
|
||||||
* Informationen können sehr **unterschiedlich** sein (Vibration, Textur, Kraft, Wärme, ...)
|
|
||||||
* Beispiel: <box>Erzeugung von **Kräften** zur Simulation von Gewichten und Längen
|
|
||||||
|
|
||||||
---
|
|
||||||
# Nutzung der **Visual Dominance**
|
|
||||||
* **Alle Sinne** tragen zur gelebten Erfahrung bei einer Simulation bei
|
|
||||||
* Bei Konflikten hat die **Sicht** bei der Informationsverarbeitung **Vorrang** [TODO CITE]
|
|
||||||
* Bedeutung für VR: <h3><box>Für eine realistische Wahrnehmung muss **nicht die gesamte Kraft** erzeugt <br> werden, sondern nur genug, um die **Sicht** zu **unterstützen**
|
|
||||||
|
|
||||||
---
|
|
||||||
# **Hintergrund** des Papers
|
|
||||||
* *Passive Haptic Feedback* (PHF): günstig und mobil, nicht sehr realistisch
|
|
||||||
* *Active Haptic Feedback* (AHF): realistischer, weder günstig noch mobil
|
|
||||||
* $\implies$ ***Dynamic Passive Haptic Feedback* (DPHF)** als Mittelweg testen ?
|
|
||||||
* ### <box> 💡 Idee: Bewegung soll **kein direktes Feedback** sein, sondern den Controller so ändern, dass er **mehrere Gegenstände** darstellt
|
|
||||||
|
|
||||||
---
|
|
||||||
# **Hintergrund** des Papers
|
|
||||||

|
|
||||||
|
|
||||||
---
|
|
||||||
# **Shifty** als DPHF-Versuch
|
|
||||||
|
|
||||||
### Ziel: Gewicht nach oben bzw. unten bringen, um mehr bzw. weniger Kraft zu brauchen, um gehoben zu werden
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="multicolumn" align="center"><div>
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
</div><div>
|
|
||||||
|
|
||||||
Eigenschaft | Wert
|
|
||||||
--------------------:|:-------------------
|
|
||||||
Masse | 440 g
|
|
||||||
Internes Gewicht | 127 g
|
|
||||||
Länge | 505 mm
|
|
||||||
Diameter | 40 mm
|
|
||||||
Nutzer-Input-Methode | Push-Button
|
|
||||||
Steuerungsmethode | Arduino in Rucksack
|
|
||||||
|
|
||||||
|
|
||||||
</div></div>
|
|
||||||
|
|
||||||
---
|
|
||||||
<!-- _class: chapter -->
|
|
||||||
# Experiment 1
|
|
||||||
## <br>Kann eine Simulation mit Shifty überhaupt funktionieren ? <br>(bzgl. **<box>Realismus**, **<box>Anstrengung** und **<box>Spaß**)
|
|
||||||
|
|
||||||
---
|
|
||||||
# **Teilnehmer:innen** des Experiments
|
|
||||||
|
|
||||||
<div align="center">
|
|
||||||
|
|
||||||
### Eigenschaften der $N = 12$ Teilnehmenden (Experiment 1)
|
|
||||||
|
|
||||||
Eigenschaft | Aufteilung
|
|
||||||
-----------------------------------:|:---------------------------------------------------
|
|
||||||
Geschlecht | 7 männlich, 5 weiblich
|
|
||||||
Alter | Min: 21, Max: 37, Mittelwert: 28 Jahre
|
|
||||||
Brillen/Kontaktlinsen in der Studie | 5 mit, 7 ohne
|
|
||||||
Rechts- bzw. Linkshändige | 9 Rechts-, 3 Linkshändige
|
|
||||||
Erfahrung mit 3D-Spielen | Min: 1, Max: 7, Mittelwert: 3,5 (Skala von 1 bis 7)
|
|
||||||
Erfahrung mit VR | Min: 1, Max: 3, Mittelwert: 1,6 (Skala von 1 bis 7)
|
|
||||||
|
|
||||||
|
<div class="title">Privacy by design: DIY Marp(X) AI presentations without sending data to third parties</div>
|
||||||
|
<div class="subtitle">
|
||||||
|
... and why you should use them too!
|
||||||
</div>
|
</div>
|
||||||
|
<div class="author">Romane Viton</div>
|
||||||
|
<div class="date">2026-05-24</div>
|
||||||
|
<div class="organization">DFI-203, htw saar</div>
|
||||||
|
|
||||||
---
|
---
|
||||||
# Durchgeführte **Experimente**
|
# A few **questions** first
|
||||||
|
* Who here would consider themselves a **developer** ?
|
||||||
<div class="multicolumn"><div>
|
* Experience with **code editors / IDEs** ?
|
||||||
|
* **More comfortable** with editor than with other software ?
|
||||||
## Umgebung
|
* Does **text** just feel faster/more efficient at this point?
|
||||||
- Teilnehmer:innen über Aufgaben informiert
|
|
||||||
- Labor-Umgebung mit *HTC Vive* und Kopfhörern
|
|
||||||
- Optische Überwachung des Verhaltens
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div><div>
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
</div></div>
|
|
||||||
|
|
||||||
---
|
---
|
||||||
# Experiment 1: **kontinuierliche Änderung der Länge bzw. Dicke**
|
# <div class="inline-img">  **Markdown**
|
||||||
|
## (It's everywhere - you've most likely dealt with it at least once)
|
||||||
|
```md
|
||||||
|
# Main title
|
||||||
|
## Heading 2 - You can make:
|
||||||
|
|
||||||
<div class="multicolumn"><div>
|
- *italic text*
|
||||||
|
- **bold text**
|
||||||

|
- ~~strikethrough~~
|
||||||
|
- lists
|
||||||
</div><div>
|
- [links](http://example.com)
|
||||||
|
- 
|
||||||
|
- > Quotes
|
||||||
|
```
|
||||||
- Freie Bewegung innerhalb der Umgebung
|
|
||||||
- Mit virtuellem Teleskop in der Hand
|
|
||||||
- 1\. Phase mit Bewegung des Gewichts (DPHF)
|
|
||||||
- 2\. Phase ohne Bewegung des Gewichts (PHF)
|
|
||||||
- Reihenfolge der 1. und 2. Phase zufällig
|
|
||||||
- <box>➕</box>- und <box>➖</box>-Props in der Umgebung,
|
|
||||||
um Länge und Dicke linear zu ändern
|
|
||||||
|
|
||||||
</div></div>
|
|
||||||
|
|
||||||
---
|
---
|
||||||
<!-- _class: quote -->
|
# Why not write **presentations** as text ?
|
||||||
# Erwartungen der Autoren
|
## <div class="inline-img"> Introducing:  (Yuki Hattori)
|
||||||
|
* Markdown presentation ecosystem
|
||||||
"We expect *Shifty* to outperform [PHF] in the subjective measures **realism and fun**, but **not in exertion**."
|
* <span class="inline-img"> Comes as a  command line tool or a  VSCode editor extension
|
||||||
|
* Technically Just A Web Page:tm: $\implies$ can write HTML/CSS if you want to customize
|
||||||
|
* MarpX (Paolo Cunha) offers high quality ready-to-use themes
|
||||||
|
* If you know Markdown/HTML/CSS: <box>No need to learn (yet another) tool!
|
||||||
*Stimmt das aber wirklich?* 🤔
|
|
||||||
|
|
||||||
---
|
---
|
||||||
# Experiment 1: **Ergebnisse**
|
# **Collaborating** with others / keeping track of **versions** ?
|
||||||
|
> ## "Well surely the editor can't do ***that*** ", I hear you say
|
||||||

|
* All the presentations are **text-based** versions of a file tree
|
||||||
|
* We need a tool to maintain **versions** of a text-based file tree...
|
||||||
<!-- In allen Fällen wurde DPHF besser als PHF bewertet, was die Erwartungen übertroffen hat. -->
|
* <span class="inline-img"> Ever heard of  `git`?
|
||||||
|
* We already have a **tool** to collaborate on versions of text-based projects!
|
||||||
</center></div></div>
|
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
<!-- _class: chapter -->
|
# How do we make sure data is **safe** from big companies?
|
||||||
# Experiment 2
|
- There *are* online platforms like GitHub for this (but: this defeats the whole purpose)
|
||||||
## <br>Das Gewicht bewegt sich aber langsam ! <br><br> Kann man trotzdem (realistisch) schwere Objekte heben ?
|
- It's 2026, and servers are pretty cheap
|
||||||
|
- You can set up your own infrastructure in an afternoon
|
||||||
|
- (less than 100 lines of `docker-compose.yml`)
|
||||||
|
|
||||||
---
|
---
|
||||||
# **Teilnehmer:innen** des Experiments
|
# One step further: hosting services on your **own infrastructure**
|
||||||
|
- I won't tell you how to set it up (plenty of guides online)
|
||||||
|
- TL;DR: **<box>On pushing changes $\rightarrow$ Auto-Render and Upload**
|
||||||
|
- Here are some tools I'm using for my personal setup:
|
||||||
|
|
||||||
<center>
|
<center>
|
||||||
|
|
||||||
### Eigenschaften der $N = 12$ Teilnehmenden (Experiment 2)
|
Requirement | Possible tool
|
||||||
|
-:|:-
|
||||||
Eigenschaft | Aufteilung
|
Server|Any VPS will do
|
||||||
-----------------------------------:|:---------------------------------------------------
|
Simple software deployment|Docker
|
||||||
Geschlecht | 9 männlich, 3 weiblich
|
HTTPS support|Caddy
|
||||||
Alter | Min: 21, Max: 37, Mittelwert: 27 Jahre
|
Git collaboration|Gitea
|
||||||
Brillen/Kontaktlinsen in der Studie | 6 mit, 6 ohne
|
Presentation hosting|Git-Pages
|
||||||
Rechts- bzw. Linkshändige | 10 Rechts-, 2 Linkshändige
|
Automated deployment|Gitea Actions
|
||||||
Erfahrung mit 3D-Spielen | Mittelwert: 2,9 (Skala von 1 bis 7)
|
|
||||||
Erfahrung mit VR | Min: 1, Max: 4, Mittelwert: 1,8 (Skala von 1 bis 7)
|
|
||||||
|
|
||||||
</center>
|
</center>
|
||||||
|
|
||||||
---
|
---
|
||||||
# Experiment 2: **Heben von virtuellen Objekten**
|
# ...isn't this really **expensive**, though?
|
||||||
|
* Not really!
|
||||||
|
* Domain name: `~10 EUR/year`
|
||||||
|
* 24/7 VPS (200GB Storage, 6 vCPUs, 12GB RAM): `6.72 EUR/month`
|
||||||
|
* Also hosting other services on it and not even at capacity
|
||||||
|
* I use Contabo, but Hetzner/OVH/Hostinger also work
|
||||||
|
* *it's all yours, no need to worry about your data being accessed by third parties!*
|
||||||
|
* Privacy does have a price, but so does exposing your personal data
|
||||||
|
* **<box>Which one are you willing to pay?**
|
||||||
|
|
||||||
|
---
|
||||||
|
# ...wasn't this supposed to **integrate LLMs** as well?
|
||||||
|
* It can be done as well!
|
||||||
|
* Head start when hosting models: `Ollama` (from Ollama Inc.)
|
||||||
|
* Automatically handles the download and execution of open models locally
|
||||||
|
* **<box>💡 Works even better when handling content, since everything is text-based !**
|
||||||
|
* We can integrate this into our IDE of choice and never have to worry about our data being sent to anyone!
|
||||||
|
|
||||||
|
---
|
||||||
|
# **Pros** and **cons** from experience
|
||||||
|
|
||||||
<div class="multicolumn"><div>
|
<div class="multicolumn"><div>
|
||||||
|
|
||||||
- Würfel verschiedener Größen sollen aus <br>einem Inventar genommen werden
|
## Pros
|
||||||
- Nach dem Greifen soll der Würfel in <br>die richtige Lage gebracht werden
|
- Enhanced privacy
|
||||||
- Kombinationen von 6 Varianten werden <br>nach einer *Latin Square Approach* <br>von den Teilnehmenden verglichen
|
- Very flexible if you know webdev
|
||||||
|
- No need to leave the traditional dev toolset
|
||||||
|
- Open-Source community tools, no dependency on a specific company
|
||||||
|
- Actually know what you're setting up
|
||||||
|
|
||||||
</div><div>
|
</div><div>
|
||||||
|
|
||||||

|
## Cons
|
||||||
|
- Steep learning curve
|
||||||
|
- Hard to collaborate with non-technical people
|
||||||
|
- Need to be comfortable with text-based tools
|
||||||
|
- Theme can be limiting if not chosen correctly
|
||||||
|
|
||||||
</div></div>
|
</div></div>
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
# Experiment 2: **Heben von virtuellen Objekten**
|
|
||||||
<center>
|
|
||||||
|
|
||||||
### Von den Teilnehmenden getestete Varianten
|
|
||||||
|
|
||||||
Getestete Variante | 🖐️ | 👁️ | 👂
|
|
||||||
------------------:|:----:|:--------------:|:-------:
|
|
||||||
`Base` | PHF | :x: | :x:
|
|
||||||
`Hapt` | DPHF | :x: | :x:
|
|
||||||
`Prog` | DPHF | *Progress Bar* | *Whoosh*
|
|
||||||
`Scal` | DPHF | *Skalierung* | *Whoosh*
|
|
||||||
`Trans` | DPHF | *Transparenz* | *Whoosh*
|
|
||||||
`Mask` | DPHF | *Rauch* | *Whoosh*
|
|
||||||
|
|
||||||
</center>
|
|
||||||
|
|
||||||
---
|
---
|
||||||
## TODO rest of content
|
# **Conclusion**
|
||||||
|
- Presentation software and AI often feels "unreachable" and only hostable if you're a company and have the resources for it
|
||||||
|
- It doesn't have to be that way!
|
||||||
|
- Don't contribute to that narrative $\implies$ <box>De-mystify the topic!
|
||||||
|
- *Your* data belongs to *you*; own it!
|
||||||
|
|
||||||
---
|
---
|
||||||
<!-- _class: "references" -->
|
<!-- _class: "references" -->
|
||||||
# Quellen
|
# References
|
||||||
|
* [Marp](https://marp.app)
|
||||||
<div class="multicolumn"><div>
|
* [MarpX Themes](TODO)
|
||||||
|
* []
|
||||||
1. MAIN PAPER TODO
|
|
||||||
2. https://wwwx.cs.unc.edu/Research/hyre/papers/EVEAuthored/2005-VR-Burns.pdf (Visual Dominance)
|
|
||||||
3. https://www.researchgate.net/profile/Abdulaziz-Alshaer/publication/303790509_Investigating_visual_dominance_with_a_virtual_driving_task/links/575275a608ae02ac1277b8e7/Investigating-visual-dominance-with-a-virtual-driving-task.pdf (Visual Dominance with wheelchairs)
|
|
||||||
4. https://www.youtube.com/watch?v=1l0wKk6q_ss (Demo Video from researchers)
|
|
||||||
|
|
||||||
</div><div>
|
|
||||||
|
|
||||||
TODO move references on 2 cols to improve readability
|
|
||||||
|
|
||||||
</div></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
# MarpX-Präsentation online verfügbar
|
# **This presentation** is online too!
|
||||||
|
|
||||||
<div class="multicolumn"><div align="center">
|
<div class="multicolumn"><div align="center">
|
||||||
|
|
||||||
## PDF
|
## PDF
|
||||||
|
|
||||||
[](https://pages.ct.cozytren.ch/sti-presentation/presentation.pdf)
|
[](https://pages.ct.cozytren.ch/m1s2-eng-presentation/presentation.pdf)
|
||||||
|
|
||||||
</div><div align="center">
|
</div><div align="center">
|
||||||
|
|
||||||
## HTML
|
## HTML
|
||||||
|
|
||||||
[](https://pages.ct.cozytren.ch/sti-presentation)
|
[](https://pages.ct.cozytren.ch/m1s2-eng-presentation)
|
||||||
|
|
||||||
</div><div align="center">
|
</div><div align="center">
|
||||||
|
|
||||||
## Repository
|
## Repository
|
||||||
|
|
||||||
[](https://gitea.ct.cozytren.ch/romane/sti-presentation)
|
[](https://gitea.ct.cozytren.ch/romane/m1s2-eng-presentation)
|
||||||
|
|
||||||
</div></div>
|
</div></div>
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wget https://pages.ct.cozytren.ch/m1s2-eng-presentation/presentation.pdf
|
||||||
|
git clone https://gitea.ct.cozytren.ch/romane/m1s2-eng-presentation
|
||||||
|
|
||||||
|
```
|
||||||