Hoe maak je 3D gegevens voor klar.land?

·

·

Hier leggen we uit welke opties er momenteel beschikbaar zijn op klar.land voor het weergeven van 3D gegevens en hoe de gegevens verwerkt moeten worden om bevredigende resultaten te krijgen.

Programm

We raden het programma blender aan voor het genereren van 3D-gegevens.

Vanuit blender wordt een glb-bestand geëxporteerd, dat de gebakken texturen en alle animaties en materialen zo goed mogelijk gecomprimeerd moet bevatten.

De beste prestaties van de 3D-weergave in de webbrowser worden bereikt door de grootst mogelijke compressie en reductie van de componenten/vertices. Dit komt uiteindelijk de positieve gebruikerservaring ten goede.

Gegevensformaat

klar.land verwerkt gegevens in glb/gltf dataformaat met specifiek daarin vermelde objectnamen, die als basis dienen voor interactie. De benaming staat verderop in deze handleiding.

Gegevens uploaden

Via het beheermenu kunnen mensen met de juiste toegangsrechten een nieuw zogenaamd “podium” aanmaken om de 3D gegevens te uploaden.

Hiervoor kan het glb-bestand worden geüpload in het daarvoor bestemde veld door het simpelweg te slepen. De laadbalk toont de voortgang van het uploaden. Zolang dit bezig is en de upload nog niet is voltooid, mag het browservenster niet worden gesloten.

In het tekstveld “JSON” worden de individuele interactieopdrachten voor het glb/gltf bestand en de 3D omgeving gedefinieerd. De verschillende mogelijkheden voor het instellen en afstellen van de “Stage” kun je vinden in de JSON instructies.

Materiaal

1. voor verwisselbare materialen moet een object genaamd “MaterialHolder” worden gemaakt dat alle materialen bevat waartussen kan worden gewisseld.

Camera

De initiële camera (het beeld dat je ziet bij het laden van de scène) moet Defaultcam heten.

2. Alle andere cameranamen moeten eindigen op cam.

Verlichting

1. de namen van arealights moeten beginnen met Arealight en

2. puntlicht met puntlicht.

Objecten

Objectnamen moeten ook worden toegewezen aan de corresponderende mazen.

Als meerdere objecten dezelfde naam hebben, bijvoorbeeld in het geval van meerdere eieren, dan moeten de namen “Ei_1, Ei_2, Ei_3”, enzovoort zijn.

3. objecten moeten een schaal van 1 krijgen voordat ze worden geëxporteerd.

Voor objecten met videotexturen wordt het aanbevolen om eenvoudige vlakken (rechthoeken) te maken met standaard UV-mapping. Deze moeten verschillende materialen hebben als er verschillende objecten moeten worden getoond met elk verschillende video’s. Objecten met dezelfde materialen krijgen ook dezelfde video.

Materiaal/Texturen

1. voor glazen materialen moet de naam beginnen met Glas.

2. Gebakken ambient occlusion maps zouden belangrijk zijn voor de prestaties, omdat dynamische schaduwberekening rekenintensief is.

3. een speciale, niet-standaard node in Blender wordt gebruikt voor de Baked Ambient Occlusion Maps. Je kunt dit het beste uitpakken uit een bestaand blend-bestand. Als je geen geschikt blendbestand hebt, neem dan contact met ons op.

Navigatie in het podium

Als navigatie over de vloer (d.w.z. overal op de vloer klikken) gewenst is, moet het vloerobject “_floor” heten en moet het draaipunt van het object gecentreerd zijn. Let op: in de Blender-hiërarchie moet alleen het mesh-object “_floor” heten.

Als alternatief voor het _floor object kun je een object ook de naam “_navMesh” geven. Deze wordt automatisch onzichtbaar gemaakt en via de “userScale” parameter in de Json code kun je de gewenste hoogte in meters boven de _navMesh opgeven. Vergeleken met het _floor object heeft men dus meer mogelijkheden voor aanpassing.

Voor appartementen/kamers en dergelijke wordt het aanbevolen om grondspots te gebruiken. Deze voorkomen onder andere dat je tegen muren navigeert. Om dit te doen, maak je gewoon verschillende vlakken (=rechthoeken) zonder materiaal net boven het vloerobject met de naam “_floor”, die de string “groundspot” in hun naam bevatten. Daarnaast moet de Json-code het volgende bevatten:

{
  "Stage3dData": [
    {
	  "navigationmode":2,
	  .....
    }
  ]
}
Navigatie via grondspots

Animaties

Animatienamen moeten beginnen met de bijbehorende objectnaam.

Dus bijvoorbeeld

Ei_1 vliegt op eettafel

Ei_2 in pot

BELANGRIJK: Zorg voor consistentie in de naamgeving van animaties en objecten! Zowel tijdens het maken als tijdens het post-processen/veranderingen!

Dupliceer geen animaties!

Informatie in een aparte lijst voor de animaties:

1. animatienaam (een willekeurige animatienaam)

2. animatiegroep (als meerdere objecten klikbaar worden na het klikken op één object, moeten ze allemaal dezelfde groepsnaam krijgen).

3. animatielaag (knop wordt aangeklikt en camera vliegt naar cameraplek => laag 0, object wordt aangeklikt en speelt animatie af => laag 1, subobject wordt aangeklikt en speelt af)

4. animatiestatus (als er een andere animatie moet worden afgespeeld wanneer er opnieuw op een object wordt geklikt dan toen er de eerste keer op werd geklikt, moet aan de eerste animatie status 0 worden toegewezen en aan de tweede status 1 (bijv. eerste klik => deur gaat open, tweede klik => deur gaat dicht)).

5. animatie-triggerobject (object dat de animatie moet starten als erop wordt geklikt)

6. animatiecamera (camera waarnaar wordt geschakeld wanneer op het triggerobject wordt geklikt).

7. animaties met tijdcode (de exacte namen van de animaties zoals gegeven in het 3D-programma, inclusief de tijdcodes wanneer ze moeten worden afgespeeld).

(voor meer informatie over animaties en hun naamgeving, zie de JSON instructies).