Hoe je animaties, interacties en vele andere aanpassingen kunt toevoegen aan de 3D-omgeving met een JSON-bestand.

·

·

Om 3D-interactie mogelijk te maken of om aanpassingen te kunnen maken aan camera’s, belichting en nog veel meer, moeten individuele instelopties worden gemaakt via het JSON-tekstveld in het stadium in het beheermenu van klar.land. We leggen hier in detail uit hoe dit werkt.

JSON tekstveld (aanbeveling: maak JSON in een code/teksteditor zoals bijv. notepad++ en plak het hier)

Een minimale JSON-code kan worden gegenereerd na het uploaden van een glb-bestand door op de knop “Genereer defaultjson” te drukken (het glb-bestand moet ten minste één camera bevatten met de naam “Defaultcam”).

Minimale JSON-code ziet er als volgt uit (één stap werkt hier al mee). Deze code kan naar wens worden uitgebreid met behulp van de volgende documentatie.

{
 "Stage3dData" :[
{
 "threedfile" : "Dateiname.glb",
 "outlinelevel" : 0,
 "lightsetup": 0,
 "spritescale": 1,
 "defaultqualitylevel": 0,
 "scenetype": "_3d"
}
]
}

(!) belangrijke opmerking: in de volgende JSON codefragmenten kunnen haakjes in sommige gevallen ontbreken of worden parameters alleen in algemene vorm gespecificeerd, zoals [number]. Daarom wordt aanbevolen om code alleen te kopiëren of aan te passen van werkende JSON’s van fasen.

Vereiste gegevens

Stage3dData moet worden opgegeven:

Structuur:

"Stage3dData" :[
    {
   "threedfile" : "szenenname.glb",
    "outlinelevel" : [number],
  "perspectives":[
          {
              "name":"Standard Kamera",
              "camera":"Defaultcam"
          }
],
    "lightsetup": [number],
    "spritescale": [number],
    "defaultqualitylevel": [number],
    "scenetype": [string]
    },
 ],
"AOMaps" : [
    {
    "mesh":"Meshname",
    "aomap":"Texturname.jpg"
    }
],

Uitleg:

“threedfile” : “szenenname.glb” Bestandsnaam van de scène (momenteel alleen glbs ondersteund)

“outlinelevel” : 0 als objecten al de contour moeten krijgen (blauw kader om klikbare objecten te markeren) bij het laden van de scène, 1 als objecten pas hun contour moeten krijgen na het klikken op de knop.

“perspectieven” : optioneel, lijst van camera’s die in het menu moeten verschijnen

“lightsetup” : 0 gebruikt alleen HDR, 1 gebruikt HDR + Point + Arealight (momenteel niet geïmplementeerd)

“spritescale” : 1 de schaling van de knoptexturen,

“defaultqualitylevel” : 0 = renderpass + outlinepass + fxaapass (compromis tussen prestaties + uiterlijk), 1 = ssaapass + outlinepass (betere anti-aliasing, slechtere prestaties)

“scenetype” : “3d” of “360

"useCases" :[
    
            {
        "name":"Usecasename",
        "group":"Usecasegroup",
        "animationlayer": [number],
        "state":[number],
            "trigger_objects":["triggerobject"],
            "cam":
            {
                "name": "camname",
                "position": [0, 0, 0],
                "rotation":[0, 0, 0],
                "lookatTarget": "lookatobject"
            },
            "animations":
            [
                {
                    "name":"Objektname Anim01",
                    "tc":0,
                    "loop":"true"
                },
                {
                    "name":"Objektname Anim02",
                    "tc":0 
                }
            ]
    },

“camnaam” moet eindigen op cam

“lookatTarget” : “lookatobject” (indien niet gespecificeerd wordt het aangeklikte object gebruikt als lookattarget)

“name” : “[Objektname Anim01]” (moet zowel in glb als in JSON beginnen met het animatieobject, gevolgd door een spatie en dan de unieke animatienaam) // bijv. ‘flap_up_armature open’, als een spatie in de animatienaam niet mogelijk is vanwege software (bijv. bij 3dsMax), kan ook een % teken worden gebruikt.

“tc” :[number] (tijdcode in seconden, animatie wordt afgespeeld na de opgegeven tijd, het is dus alleen een vertraging van de start – de animatie wordt volledig afgespeeld)

“loop” : true (indien gespecificeerd en waar, wordt de animatie afgespeeld als een lus, d.w.z. hij herhaalt zichzelf)

“autoplay” : true – als een animatie automatisch vanaf het begin moet worden afgespeeld

Uitleg van animatielagen/-states

Animatielagen worden voornamelijk gebruikt voor het markeren van objecten en het toewijzen van welke objecten gemarkeerd en selecteerbaar zijn als je op welke objecten klikt.

Toestand wordt gebruikt wanneer een object verschillende toestanden heeft en afhankelijk van de toestand een andere animatie moet afspelen.

z. B.:

Animatielaag 0: Krijgt geen highlighting en wordt gebruikt voor de knoppen, d.w.z. wanneer de camera naar een plek springt zonder interactie.

Animatielaag 1: wordt gemarkeerd zodra op het object Animatielaag 0 (de knop) van de groep wordt geklikt.

Animatielaag 2: wordt gehighlight zodra op het object van animatielaag 0 van de groep wordt geklikt.

Voorbeeld:

Animatielaag 0: spring naar lade 3

Animatielaag 1: open lade 3

Animatielaag 2: Speel animatie af van aangeklikt mes, wat in de lade ligt.

Status 0/1 worden momenteel gebruikt voor het omschakelen van animaties:

Dus:

Object is standaard in toestand 0. Als erop wordt geklikt, wordt gecontroleerd of het een animatie heeft met toestand 1. Als dit het geval is, wordt de animatie afgespeeld en is het object in toestand 1.

Als er nu weer op wordt geklikt, wordt de toestand 1 animatie afgespeeld en gaat het object terug naar toestand 0.

Voorbeeld:

Toestand 0: De deur van de graankast gaat open

Toestand 1: deur van graankast gaat dicht (bewerkt)

Meer toestanden dan 0 en 1 en de ondervraging daarvan zijn momenteel gepland/aan de gang.

Meer informatie:

Animatie array kan worden ingevoegd als animatie in een animatie array. Deze animatiesequentie kan dan worden herhaald.

Achtergrondkleur

De achtergrondkleur instellen:

{
  "Stage3dData": [
    {
	"backgroundColor": "rgb(81, 87, 99)",
	.....

Naast rgb kan de achtergrondkleur als volgt worden opgegeven:
“rgb(255, 0, 0)”
“rgb(100%, 0%, 0%)”
X11-kleurnaam – alle 140 kleurnamen worden ondersteund.
hemelsblauw
//HSL-string
“hsl(0, 100%, 50%)”

Hdr omgevingslicht

Optioneel.

Als dit niet wordt opgegeven, wordt de standaard studio hdr gebruikt: /files/stages/hdr/studio_01.hdr.

Onder“hdr” –“naam” heb je de mogelijkheid om de bestandsnaam van het hdr-bestand voor deze fase op te geven. Dit moet zich op de server bevinden onder “/files/stages/hdr”. Stuur het bestand naar je klar.land accountmanager, die het daar voor je beschikbaar zal maken.

Op dit moment bieden we de volgende standaard HDRI:

  • adams_plaats_brigde_1k.hdr
  • autoshop_01_1k.hdr
  • gezellig_café_1k.hdr
  • verloop_01.hdr
  • hotel_kamer_1k.hdr
  • shanghai_bund_1k.hdr
  • daklicht_garage_1k.hdr
  • studio_01.hdr
  • studio_01_heller.hdr
  • studio_klein_06_1k.hdr
  • studio_klein_08_1k.hdr
  • venice_zonsondergang_1k.hdr
  • wit.hdr

“intensiteit” : intensiteit van het licht – moet mogelijk meerdere keren worden getest.

Voorbeeld – JSON:

"Stage3dData" :[
    {
      "threedfile" : "muellmaschiene.glb",
      "outlinelevel" : 0,
      "lightsetup": 0,
       "hdr":{
          "name":"venice_sunset_1k.hdr",
         		 "intensity": 3
      },
      "spritescale": 1,
      "defaultqualitylevel": 0,
      "scenetype": "3d",

HTML-documenten oproepen via objectklik

Deze kan worden aangemaakt in het documentengebied binnen een use case:

Voorbeeld – JSON:

 {
      "cam": {
        "name": "rauchmelder01cam",
        "position": [
          0,
          0,
          0
        ],
        "rotation": [
          0,
          0,
          0
        ],
        "lookattarget": "rauchmelder01"
      },
      "name": "rm",
      "group": "rm",
      "state": 0,
      "documents": [
        {
          "name": "rauchmelder.html",
          "type": "html",
          "uuid": "d90701d8-0769-4ba6-b23e-327ca0637df1",
          "playonclick": true
        }
      ],
      "animationlayer": 0,
      "trigger_objects": [
        "rauchmeldergruppe01"
      ]
    },

Een hyperlink oproepen door op het object te klikken

Voor dit doel, in een use case

“gotourl” : “URL” moet worden ingevoerd

(opent momenteel in nieuw tabblad)

Voorbeeld – Usecase:

  {
	"name":"zb out",
        "group":"zb",
        "animationlayer": 0,
        "state":0,
        "gotourl":"https://www.klar.land",
	"trigger_objects":["zbgroup"],
	"cam":
	{
        "name": "zbcam",
	"position": [0, 0, 0],
	"rotation":[0, 0, 0]
	},
        "animations":
            [
	        {
                    "name":"zbgroup%out",
                    "tc":0
		}
	]
    }

Materiaal – Animaties

In principe kun je een materialAnimations Array object maken in elke useCase:

“materialAnimations“: [{}] Hierin kunnen de volgende parameters worden ingevoerd:

naam: hier hoeft niets te worden overwogen, behalve dat de naam uniek is en geen tweede keer voorkomt in de json.

actie: hier moet je opgeven wat voor soort materiaalanimatie moet worden uitgevoerd.
Mogelijke waarden zijn:

veranderingMateriaalWaarde
addMaterialValueTween

changeTexturePositionValue
addTexturePositionValue

veranderTextureRotationDegreeValue
addTextureRotationDegreeValue

stopMaterialAnimation

Bij wijze van uitleg:

Het verschil tussen toevoegen en wijzigen is dat met toevoegen de gewenste waarden worden toegevoegd aan de oude materiaalwaarden, met wijzigen worden de huidige waarden gewijzigd in de opgegeven waarden.
Dit is vooral relevant voor lussen.

Als een textuur bijvoorbeeld naar rechts moet bewegen op de x-as, zou je changeTexturePositionValue kunnen gebruiken, bijvoorbeeld van 0 naar 2. Als je dan specificeert dat dit in een lus moet gebeuren, zou de textuur van positie x=0 naar x=2 bewegen. Wanneer de lus echter een tweede keer wordt uitgevoerd, zou de textuur niet meer bewegen omdat hij naar x=2 wordt verplaatst, maar al op deze positie staat.

Als je de waarde met 1 per loop wilt verhogen, moet je de juiste “add” actie gebruiken. Dit maakt het mogelijk om materiaalwaarden aan te passen en texturen te roteren of te verplaatsen. Met stopMaterialAnimation kunnen lopende MaterialAnimations worden gestopt. Dit is bijvoorbeeld relevant voor animaties die in een oneindige lus zitten en gestopt moeten worden.

Lus:

Dit is een optionele parameter.

Als deze niet is ingesteld, wordt de materialAnimation één keer uitgevoerd.
Als deze parameter is ingesteld en de waarde 0 of true heeft, wordt er oneindig doorgelust.
Als hier een numerieke waarde wordt ingevoerd, wordt de animatie zo vaak herhaald als de waarde aangeeft.
lus = 12 zorgt ervoor dat de materiaalanimatie precies 12 keer wordt herhaald.

start_tc:
einde_tc:

Hier worden de begin- en eindtijd van de animatie gedefinieerd in seconden (decimalen zijn mogelijk).
start_tc geeft aan wanneer de materiaalanimatie moet beginnen nadat de UseCase is uitgevoerd.

start_tc = 2 de animatie start 2 seconden vertraagd, met start_tc = 0 start de animatie direct.
end_tc geeft aan wanneer de animatie moet stoppen.

De combinatie van beide waarden bepaalt hoe snel de animatie moet worden uitgevoerd. Hoe dichter start_tc en end_tc bij elkaar liggen, hoe sneller de animatie wordt afgespeeld.

materialName:Hier moet de naam van het te animeren materiaal worden opgegeven.

materialproperty:bepaalt welke materiaaleigenschap/textuur beïnvloed moet worden.

mogelijke materiaaleigenschappen:

opaciteit
emissieveIntensiteit
uitstralend
aoMapIntensity
bumpScale
kleur
verplaatsingsschaal
envMapIntensity
lichtMapIntensiteit
metaalheid
ruwheid

mogelijke texturen:

kaart
alphaMap
emissiveMap
aoMap
bumpMap
envMap
verdringerMap
lightMap
metaalnessMap
normalMap

aangetast:
Dit is een optionele parameter die alleen hoeft te worden gespecificeerd als de acties addTexturePositionValue of changeTexturePositionValue zijn gespecificeerd.
Momenteel kan x of y hier worden opgegeven.
Als een textuur horizontaal moet bewegen, voer je hier x in, als hij verticaal moet bewegen voer je hier y in.
Bijvoorbeeld: “affectedvalue”: “x”,

tweenValue
De numerieke waarde waarop de geselecteerde eigenschap moet worden ingesteld.
Als een textuurrotatie-actie is geselecteerd, moet de gewenste rotatie worden gespecificeerd in graden.
Bijvoorbeeld een textuur eenmaal 180 graden draaien:
“tweenValue”: 180,

json Voorbeeld:

{
  "useCases": [
    {
      "name": "Start Opacity Animation",
      "group": "Material",
      "state": 0,
      "animationlayer": 0,
      "trigger_objects": [
        "Cube0"
      ],
      "materialAnimations": [
        {
          "loop": true,
          "name": "changeOpacity",
          "action": "changeMaterialValue",
          "end_tc": 10,
          "start_tc": 0,
          "tweenValue": 0,
          "materialName": "Material0",
          "materialproperty": "opacity"
        }
      ]
    },
    {
      "name": "Start Diffuse Map Animation",
      "group": "Material",
      "state": 0,
      "animationlayer": 0,
      "trigger_objects": [
        "Cube1"
      ],
      "materialAnimations": [
        {
          "loop": 0,
          "name": "add diffuse pos",
          "action": "addTexturePositionValue",
          "end_tc": 2,
          "start_tc": 0,
          "tweenValue": 2,
          "materialName": "Material1",
          "affectedvalue": "x",
          "materialproperty": "map"
        }
      ]
    },
    {
      "name": "Start AlphaMap Animation",
      "group": "Material",
      "state": 0,
      "animationlayer": 0,
      "trigger_objects": [
        "Cube5"
      ],
      "materialAnimations": [
        {
          "name": "add diffuse pos",
          "action": "addTexturePositionValue",
          "end_tc": 8,
          "start_tc": 0,
          "tweenValue": 2,
          "materialName": "Material5",
          "affectedvalue": "x",
          "materialproperty": "map"
        }
      ]
    },
    {
      "name": "Start Diffuse Map Animation",
      "group": "Material",
      "state": 0,
      "animationlayer": 0,
      "trigger_objects": [
        "Cube2"
      ],
      "materialAnimations": [
        {
          "loop": 2,
          "name": "change diffuse pos",
          "action": "changeTexturePositionValue",
          "end_tc": 10,
          "start_tc": 0,
          "tweenValue": 2,
          "materialName": "Material2",
          "affectedvalue": "y",
          "materialproperty": "map"
        }
      ]
    },
    {
      "name": "Start Diffuse Map Rotation Animation",
      "group": "Material",
      "state": 0,
      "animationlayer": 0,
      "trigger_objects": [
        "Cube3"
      ],
      "materialAnimations": [
        {
          "loop": 1,
          "name": "add diffuse rotation",
          "action": "addTextureRotationDegreeValue",
          "end_tc": 10,
          "start_tc": 0,
          "tweenValue": 180,
          "materialName": "Material3",
          "materialproperty": "map"
        }
      ]
    },
    {
      "name": "trigger lod1 anim",
      "group": "Cube6",
      "state": 0,
      "animations": [
        {
          "tc": 0,
          "name": "Cube6_lod1 Action"
        }
      ],
      "animationlayer": 0,
      "trigger_objects": [
        "Cube6_lod1"
      ]
    },
    {
      "name": "Stop Opacity Animation",
      "group": "Material",
      "state": 0,
      "animationlayer": 0,
      "trigger_objects": [
        "Cube4"
      ],
      "materialAnimations": [
        {
          "name": "changeOpacity",
          "action": "stopMaterialAnimation",
          "start_tc": 0
        }
      ]
    }
  ],
  "Stage3dData": [
    {
      "controls": {
        "maxZoom": 100000,
        "minZoom": 1,
        "zoomMode": 1,
        "maxDistance": 100000,
        "minDistance": 1
      },
      "scenetype": "_3d",
      "lightsetup": 0,
      "threedfile": "cube6.glb",
      "loddistance": 5,
      "spritescale": 1,
      "outlinelevel": 0,
      "defaultqualitylevel": 0
    }
  ]
}

Media oproepen (pdf’s/video’s/…)

Video geactiveerd door te klikken op een knop of object

Het is mogelijk om een of meer documenten (video/mp4, pdf, jpg, png) op te halen als je op een object of knop klikt, die dan op het tabblad “Media” verschijnen om opgehaald te worden.

De media moeten naar de server worden geüpload in de map docs van de betreffende stage: /files/stages/[uuid]/docs. (Je stuurt de gegevens naar je accountmanager bij klar.land, die de gegevens daar voor je opslaat).

“trigger_objects” triggering object of knop

“cam” – hier worden onder andere de naam van de bijbehorende camera en het cameradoel opgegeven.

“documenten” – een of meer op te halen documenten

“type” – video | afbeelding | pdf

“uuid” – online genereren op https://www.uuidgenerator.net/ en kopiëren + plakken

“playonclick” : true | false – als een document direct moet verschijnen

Voorbeeld – JSON:

"useCases" : [
{
"name":"klick_dl_pdf",
"group":"01",
"animationlayer": 0,
"poi_uuid": "0f7fa12e-dd7c-11eb-ba80-0242ac130004",
"state":0,
"trigger_objects":["button_vorne_rechts"],
"cam":
{
"name": "Pdfcam",
"position": [0, 0, 0],
"rotation":[0, 0, 0],
"lookatTarget":"button_vorne_rechts"
},"documents":
[
{
"name":"01/Freund_Demovideo.mp4",
"type":"video",
"uuid":"ac848c20-e879-11eb-9a03-0242ac130003",
"playonclick":true
},{
"name":"01/Freunde_DemoPDF.pdf",
"type":"pdf",
"uuid":"1bd675a6-dd7c-11eb-ba80-0242ac130004"
},{
"name":"01/klardenker_Unternehmenspräsentation_DE.pdf",
"type":"pdf",
"uuid":"cb5473d6-e879-11eb-9a03-0242ac130003"
},{
"name":"01/netzwerken-web.jpg",
"type":"image",
"uuid":"fe743ad0-e879-11eb-9a03-0242ac130003"
},{
"name":"01/Showroom_Demo.mp4",
"type":"video",
"uuid":"139e7574-e87a-11eb-9a03-0242ac130003"
},{
"name":"01/Vorwort_DemoPDF.pdf",
"type":"pdf",
"uuid":"2ef28950-e87a-11eb-9a03-0242ac130003"
}
]

 

Media oproepen uit de “Documenten” – belangrijk voor meertaligheid

Maak eerst de documenten in de gewenste ruimte. Je doet dit als volgt:

Navigeer naar de gewenste ruimte.
Selecteer Mijn computer -> Documenten.
Maak dan bijvoorbeeld je eigen map “etappes”, hier kun je natuurlijk vrij de naam kiezen naar jouw voorkeur.
Klik op / map openen.
Maak dan een document aan via de “+”.
Zoek een nieuw aangemaakt veld voor een document en zoek het gewenste bestand op je computer via “Browser” en upload het. Klik dan op “Opslaan”.
Als je het bestand in andere talen wilt aanbieden, selecteer dan de gewenste andere taal en vervolgens het gewenste bestand in de corresponderende taal via de “Bestandsbrowser”. Klik nogmaals op “Opslaan”, het document is dan beschikbaar in de nieuw toegevoegde taal.

Kopieer dan de UUID van het document. Dit heb je nodig om het in te voegen in de json in de stage, wat daar gebeurt net als in de andere hierboven genoemde gevallen.


Het script werkt zo dat als een UUID bestaat, het controleert of er een overeenkomende databasevermelding bestaat. Als dit het geval is, wordt het document geladen en weergegeven. Als dat niet het geval is, wordt de naam/het pad genomen en wordt het bijbehorende bestand geladen. Dit betekent dat bestaande podia niet worden opgeschoten.

Voor nieuwe podia is het dan voldoende om de UUID en het type in te voeren.

Een voorbeeld van een json invoer met bestandskoppeling via de Doc UUID:

"useCases" : [
"name": "klick_dl_pdf_03",
"group": "03",
"state": 0,
"poi_uuid": "5cdbbbbc-e883-11eb-9a03-0242ac130003",
"documents": [
{
"name": "03/klardenker_Unternehmenspräsentation_DE.pdf",
"type": "pdf",
"uuid": "8107123e-e883-11eb-9a03-0242ac130003"
},
{
"name": "03/Meditation_DemoVideo.mp4",
"type": "video",
"uuid": "3e7da4a1-6122-483b-9749-2c11caa87fd4",
"playonclick": true
},
{
"name": "03/Sein1_DemoPDF.pdf",
"type": "pdf",
"uuid": "a4ad3ec0-e883-11eb-9a03-0242ac130003"
},
{
"name": "03/Sein2_DemoPDF.pdf",
"type": "pdf",
"uuid": "b2d9a1c8-e883-11eb-9a03-0242ac130003"
},
{
"name": "03/Seminar-web.jpg",
"type": "image",
"uuid": "c1f88a5c-e883-11eb-9a03-0242ac130003"
}
],
"animationlayer": 0,
"trigger_objects": [
"button_03"
]
},
]

Spritesheets (quasi apngs) (voor knoppen)

Knoppen in een podium die worden geanimeerd via spritesheets

Spritesheets, zoals gebruikt door apngs, worden gedefinieerd in de groep“knoppen“.

De png-bestanden met de spritesheets worden op de server opgeslagen in de map “/files/stages/sprites”. (Als je individuele spritesheets wilt gebruiken, geef ze dan door aan je accountmanager van klar.land en hij kan ze beschikbaar maken op de server).

“buttonObjectName” is de naam van het 3D-object in de scène. De tekenreeks “knop” moet in de naam worden opgenomen. Hierdoor gedraagt het object zich als een knop. Dat wil zeggen dat hij altijd naar de camera is gericht en dat de knop verdwijnt als erop wordt geklikt.

“spritename” is de naam van het png-bestand in “/files/stages/sprites”.

“tilesHoriz” : Aantal horizontale tiles

“tilesVert” : Aantal verticale tiles

“numTiles” : normaal gesproken is dit het product van de vorige twee waarden. In uitzonderlijke gevallen kan dit echter ook een andere waarde zijn (bijvoorbeeld als er een aantal lege tegels aan het einde zijn).

“tileDispDuration” : Aantal milliseconden dat een tegel moet worden weergegeven.

“invisibleOnClick” : waar of onwaar, optioneel. Geeft aan of een knop onzichtbaar wordt na klikken of niet (=false). Standaard is dit waar.

Voorbeeld – JSON:

"Stage3dData" :[
{
"threedfile" : "01.glb",
"outlinelevel" : 0,
"lightsetup": 0,
"spritescale": 1,
"defaultqualitylevel": 0,
"scenetype": "3d",
"buttons":[
{
"buttonObjectName":"button_vorne_rechts",
"spritename":"floorbutton_spritesheet.png",
"tilesHoriz":25,
"tilesVert":1,
"numTiles":25,
"tileDispDuration":55,
"invisibleOnClick":"false"
}		
],

Tonemapping

Je kunt kiezen uit 5 modi om het uiterlijk van het podium aan te passen door middel van tone mapping (post-render effect).

Dit kan meerdere tests vereisen in combinatie met de Hdr en lichtintensiteiten om de optimale look voor het betreffende podium te krijgen.

Als er niets is opgegeven, wordt standaard THREE.ACESFilmicToneMapping gebruikt.

Voorbeeld – JSON:

{
"Stage3dData": [
{
"tonemapping": 2,
....

tonemapping kan de waarden 0, 1, 2, 3, 4 of 5 hebben – waarbij

0 = THREE.NoToneMapping

1 = DRIE.LinearToneMapping

2 = DRIE.ReinhardToneMapping

3 = DRIE.CineonToneMapping

4 = DRIE.ACESFilmicToneMapping

5 = DRIE.CustomToneMapping

Flat Stage met ReinhardToneMapping / “tonemapping”: 2

Flat Stage met ACESFilmicToneMapping / “tonemapping”: 4 of geen specificatie

Videotexturen

Videotexturen in een podium

Voor videotexturen worden de respectievelijke namen van de 3D-objecten (“videoObject“) waarop de videotexturen moeten verschijnen gespecificeerd, evenals het relatieve pad naar het videobestand (“videoFile“) op de server.

De video’s moeten worden geüpload naar de server in de docs-map van de betreffende stap: /files/stages/[uuid]/docs

(Stem de gegevensopslag af met je klar.land accountmanager).

Voorbeeld – JSON:

"Stage3dData" :[
{
"threedfile" : "01.glb",
"outlinelevel" : 0,
"lightsetup": 100,
"spritescale": 1,
"defaultqualitylevel": 0,
"scenetype": "3d",
"videotextures":[
{
"videoObject":"_videoplane",
"videoFile":"01/Freund_Demovideo.mp4"
}
]
}
]

“besturingselementen” opties

Diverse parameters om de zoom en afstand van de camera’s in te stellen, evenals de toewijzing van de muisknop van een podium.

Voorbeeld – JSON:

{
"Stage3dData": [
{
"hdr": {
"name": "autoshop_01_1k.hdr",
"intensity": 2
},
"controls": {
"maxZoom": 5,
"minZoom": 1,
"zoomMode": 2,
"maxDistance": 5,
"minDistance": 1
},
{
"Stage3dData": [
{
"controls": {
"zoomMode": 3,
"leftMouseMode":5,
"middleMouseMode":1,
"rightMouseMode": 1,
},
......

“zoomMode” kan de waarden 1 / 2 / 3 aannemen. Deze betekenen

1 = dolly (standaard)
2 = ZOOM
3 = GEEN

D.w.z. 3 schakelt de zoom uit.

“leftMouseMode” / “middleMouseMode” / “rightMouseMode” kunnen elk de waarden 1 / 2 / 3 / 4 / 5 / 6 aannemen. Deze betekenen

1 = ROTEREN
2 = VRACHTWAGEN
3 = OFFSET
4 = DOLLY
5 = ZOOM
6 = GEEN

Als er niets is opgegeven in de JSON code, zijn de standaardwaarden

Zoommodus = Dolly
linksMuisMode = ROTATE
rechtermuismodus = vrachtwagen
middelsteMuisMode = DOLLY

360° Fasen

(Documentatie volgt)

"spaces" : [ (werden nur in 360° Szenen verwendet)
{
"id" : [number] Stageid,
"name": [string] Stagename,
"ClickSpots":
[
{
"name":"Gehe in Flur",
"position": [8.67872, 15.1609, -12.1186],
"type":"spaceChangeSpot",
"gotoSpace": [number]
},{
"name":"Zeige Lampeninfo",
"position": [-15.4345, 6.06061, 0],
"type":"infoSpot"
}
]
},

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *