Aby umożliwić interakcję 3D lub móc dostosować kamery, oświetlenie i inne, indywidualne opcje ustawień należy wprowadzić za pomocą pola tekstowego JSON na scenie w menu administratora klar.land. Wyjaśniamy szczegółowo, jak to działa tutaj.
![](https://klarland.com/wp-content/uploads/2022/05/Screenshot_4-1024x970.png)
Minimalny kod JSON można wygenerować po przesłaniu pliku glb, naciskając przycisk „Generate defaultjson” (plik glb musi zawierać co najmniej jedną kamerę o nazwie „Defaultcam”).
Minimalny kod JSON wygląda następująco (jeden etap już z tym działa). Kod ten można dowolnie rozszerzyć, korzystając z poniższej dokumentacji.
{ "Stage3dData" :[ { "threedfile" : "Dateiname.glb", "outlinelevel" : 0, "lightsetup": 0, "spritescale": 1, "defaultqualitylevel": 0, "scenetype": "_3d" } ] }
(!) Ważna uwaga: w poniższych fragmentach kodu JSON w niektórych przypadkach może brakować nawiasów lub parametry są określone tylko w ogólnej formie, takiej jak [number]. Dlatego zaleca się kopiowanie lub dostosowywanie kodu tylko z działających plików JSON z etapów.
Wymagane dane
Stage3dData musi być określona:
Struktura:
"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" } ],
Wyjaśnienie:
„threedfile” : „szenenname.glb” Nazwa pliku sceny (obecnie obsługiwane są tylko pliki glb)
„outlinelevel” : 0 jeśli obiekty powinny już otrzymać obrys (niebieska ramka podświetlająca klikalne obiekty) podczas ładowania sceny, 1 jeśli obiekty powinny otrzymać obrys dopiero po kliknięciu przycisku.
„perspectives” : opcjonalnie, lista kamer, które mają być wyświetlane w menu.
„lightsetup„: 0 używa tylko HDR, 1 używa HDR + Point + Arealight (obecnie nie zaimplementowane).
„spritescale” : 1 skalowanie tekstur przycisków,
„defaultqualitylevel” : 0 = renderpass + outlinepass + fxaapass (kompromis wydajności + wyglądu), 1 = ssaapass + outlinepass (lepszy antyaliasing, gorsza wydajność)
„scenetype” : „3d” lub „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 } ] },
„camname” musi kończyć się na cam
„lookatTarget” : „lookatobject” (jeśli nie określono, kliknięty obiekt jest używany jako lookattarget)
„name” : „[Objektname Anim01]” (musi zaczynać się od obiektu animacji w glb, a także w JSON, po którym następuje spacja, a następnie unikalna nazwa animacji) // np. „flap_up_armature open”, jeśli spacja w nazwie animacji nie jest możliwa ze względu na oprogramowanie (np. w 3dsMax), można również użyć znaku %.
„tc” :[number] (kod czasowy w sekundach, animacja jest odtwarzana po określonym czasie, tj. jest to tylko opóźnienie startu – animacja jest odtwarzana w całości).
„loop” : true (jeśli określono i true, animacja jest odtwarzana jako pętla, tj. powtarza się).
„autoplay” : true – jeśli animacja ma być odtwarzana automatycznie od początku.
Wyjaśnienie warstw/stanów animacji
Warstwy animacji służą przede wszystkim do podświetlania obiektów i przypisywania obiektów, które mają być podświetlane i wybierane po kliknięciu.
Stan jest używany, gdy obiekt ma kilka stanów i ma odtwarzać inną animację w zależności od stanu.
z. B.:
Warstwa animacji 0: Nie otrzymuje żadnego podświetlenia i jest używana dla przycisków, tj. gdy kamera przeskakuje do miejsca bez interakcji.
Warstwa animacji 1: Podświetlona, gdy tylko obiekt warstwy animacji 0 (przycisk) grupy zostanie kliknięty.
Warstwa animacji 2: Jest podświetlana, gdy tylko obiekt warstwy animacji 0 grupy zostanie kliknięty.
Przykład:
Warstwa animacji 0: przejdź do szuflady 3
Warstwa animacji 1: otwórz szufladę 3
Warstwa animacji 2: Odtwórz animację klikniętego noża, który znajduje się w szufladzie.
Stan 0/1 jest obecnie używany do przełączania animacji:
Więc:
Obiekt w stanie 0 domyślnie, jeśli zostanie kliknięty, sprawdzane jest, czy ma animację ze stanem 1. W takim przypadku animacja jest odtwarzana, a obiekt znajduje się w stanie 1.
Po ponownym kliknięciu odtwarzana jest animacja stanu 1, a obiekt powraca do stanu 0.
Przykład:
Stan 0: Drzwi szafki na płatki śniadaniowe otwierają się
Stan 1: Drzwi szafki na płatki śniadaniowe zamykają się (edytowane)
Więcej stanów niż 0 i 1 oraz ich analiza są obecnie planowane/rozpoczynane.
Więcej informacji:
Tablica animacji może być wstawiona jako animacja do tablicy animacji. Ta sekwencja animacji może być następnie zapętlona.
Kolor tła
Ustaw kolor tła:
{ "Stage3dData": [ { "backgroundColor": "rgb(81, 87, 99)", .....
Oprócz rgb, kolor tła można określić w następujący sposób:
„rgb(255, 0, 0)”
„rgb(100%, 0%, 0%)”
Nazwa koloru X11 – obsługiwane jest wszystkie 140 nazw kolorów.
'skyblue’
//łańcuch HSL
„hsl(0, 100%, 50%)”
Oświetlenie otoczenia Hdr
Opcjonalnie.
Jeśli nie zostanie określony, używany jest domyślny hdr studia: /files/stages/hdr/studio_01.hdr.
W sekcji„hdr” –„name” masz możliwość określenia nazwy pliku Hdr dla tego etapu. Musi on znajdować się na serwerze w katalogu „/files/stages/hdr”. Wyślij plik do swojego menedżera konta klar.land, który go tam udostępni.
Obecnie oferujemy następujące standardowe HDRI:
- adams_place_brigde_1k.hdr
- autoshop_01_1k.hdr
- comfy_cafe_1k.hdr
- gradient_01.hdr
- hotel_room_1k.hdr
- shanghai_bund_1k.hdr
- skylit_garage_1k.hdr
- studio_01.hdr
- studio_01_heller.hdr
- studio_small_06_1k.hdr
- studio_small_08_1k.hdr
- venice_sunset_1k.hdr
- white.hdr
„Intensywność„: intensywność światła – może wymagać kilkukrotnego przetestowania.
Przykład – JSON:
"Stage3dData" :[ { "threedfile" : "muellmaschiene.glb", "outlinelevel" : 0, "lightsetup": 0, "hdr":{ "name":"venice_sunset_1k.hdr", "intensity": 3 }, "spritescale": 1, "defaultqualitylevel": 0, "scenetype": "3d",
Wywoływanie dokumentów HTML poprzez kliknięcie obiektu
Można je utworzyć w obszarze dokumentów w ramach przypadku użycia:
Przykład – 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" ] },
Wywołanie hiperłącza przez kliknięcie obiektu
W tym celu, w przypadku użycia
„gotourl” : Należy wprowadzić „URL”.
(obecnie otwiera się w nowej karcie)
Przykład – przypadek użycia:
{ "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 } ] }
Materiał – Animacje
Zasadniczo możesz utworzyć obiekt MaterialAnimations Array w dowolnym przypadku użycia:
„materialAnimations„: [{}] Można tu wprowadzić następujące parametry:
name: nic nie musi być tutaj brane pod uwagę, z wyjątkiem tego, że nazwa jest unikalna i nie pojawia się po raz drugi w json.
akcja: w tym miejscu musisz określić, jaki rodzaj animacji materiału ma zostać wykonany.
Możliwe wartości to:
changeMaterialValue
addMaterialValueTween
changeTexturePositionValue
addTexturePositionValue
changeTextureRotationDegreeValue
addTextureRotationDegreeValue
stopMaterialAnimation
Tytułem wyjaśnienia:
Różnica między dodawaniem a zmianą polega na tym, że w przypadku dodawania żądane wartości są dodawane do starych wartości materiału, a w przypadku zmiany bieżące wartości są zmieniane na określone wartości.
Jest to szczególnie istotne w przypadku pętli.
Na przykład, jeśli tekstura ma przesunąć się w prawo na osi x, można użyć funkcji changeTexturePositionValue, np. z 0 do 2. Jeśli następnie określisz, że ma to zostać wykonane w pętli, tekstura przesunie się z pozycji x=0 do x=2. Jednak gdy pętla zostanie wykonana po raz drugi, tekstura nie będzie się już poruszać, ponieważ zostanie przesunięta do x=2, ale już znajduje się w tej pozycji.
Jeśli chcesz zwiększyć wartość o 1 na każde uruchomienie pętli, powinieneś użyć odpowiedniej akcji „add”. Umożliwia to dostosowanie wartości materiałów, a także obracanie lub przesuwanie tekstur. Za pomocą stopMaterialAnimation można zatrzymać uruchomione MaterialAnimations. Jest to istotne na przykład w przypadku animacji, które znajdują się w nieskończonej pętli i powinny zostać zatrzymane.
Pętla:
Jest to parametr opcjonalny.
Jeśli nie jest ustawiona, materialAnimation jest wykonywana tylko raz.
Jeśli ten parametr jest ustawiony i ma wartość 0 lub true, jest on zapętlany w nieskończoność.
Jeśli w tym miejscu wprowadzona zostanie wartość liczbowa, animacja będzie zapętlana tak często, jak określono w wartości.
loop = 12 powoduje, że animacja materiału zostanie powtórzona dokładnie 12 razy.
start_tc:
end_tc:
Tutaj czas rozpoczęcia i zakończenia animacji jest zdefiniowany w sekundach (możliwe są miejsca dziesiętne).
start_tc wskazuje, kiedy powinna rozpocząć się animacja materiału po wykonaniu UseCase.
start_tc = 2 animacja rozpocznie się z 2-sekundowym opóźnieniem, przy start_tc = 0 animacja rozpocznie się natychmiast.
end_tc wskazuje, kiedy animacja powinna się zatrzymać.
Kombinacja obu wartości określa szybkość wykonywania animacji. Im bliżej siebie znajdują się start_tc i end_tc, tym szybciej będzie odtwarzana animacja.
materialName:W tym miejscu należy podać nazwę materiału, który ma być animowany.
materialproperty:określa, na którą właściwość materiału/teksturę ma mieć wpływ.
możliwe właściwości materialProperties:
nieprzezroczystość
emissiveIntensity
emisyjny
aoMapIntensity
bumpScale
kolor
displacementScale
envMapIntensity
lightMapIntensity
metaliczność
szorstkość
możliwe tekstury:
mapa
alphaMap
emissiveMap
aoMap
bumpMap
envMap
displacementMap
lightMap
metalnessMap
normalMap
wpływ na wartość:
Jest to opcjonalny parametr, który musi być określony tylko wtedy, gdy określone są akcje addTexturePositionValue lub changeTexturePositionValue.
Obecnie można tu określić x lub y.
Jeśli tekstura ma poruszać się w poziomie, wpisz x, jeśli ma poruszać się w pionie, wpisz y.
np: „affectedvalue”: „x”,
tweenValue
Wartość liczbowa, do której ma zostać ustawiona wybrana właściwość.
Jeśli wybrano akcję obrotu tekstury, żądany obrót powinien być określony w stopniach.
np. obróć teksturę raz o 180 stopni:
„tweenValue”: 180,
json Przykład:
{ "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 } ] }
Wywołaj media (pdf/video/…)
![](https://klarland.com/wp-content/uploads/2022/05/Screenshot_7-1024x528.png)
Możliwe jest pobranie jednego lub więcej dokumentów (wideo/mp4, pdf, jpg, png) po kliknięciu obiektu lub przycisku, które następnie pojawią się w zakładce „Media” do pobrania.
Media muszą zostać przesłane na serwer w folderze docs odpowiedniego etapu: /files/stages/[uuid]/docs. (Wysyłasz dane do swojego menedżera konta na klar.land, który przechowuje je tam dla Ciebie).
„trigger_objects” obiekt lub przycisk wyzwalający
„cam” – tutaj, między innymi, określana jest nazwa powiązanej kamery i cel kamery.
„documents” – jeden lub więcej dokumentów do pobrania
„typ” – wideo | obraz | pdf
„uuid” – wygeneruj online na stronie https://www.uuidgenerator.net/ i skopiuj + wklej.
„playonclick” : true | false – jeśli dokument ma być wyświetlany bezpośrednio
Przykład – 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" } ]
Wywoływanie multimediów z „Dokumentów” – ważne dla wielojęzyczności
Najpierw utwórz dokumenty w żądanej przestrzeni. Robisz to w następujący sposób:
Przejdź do żądanego miejsca.
Wybierz Mój komputer -> Docs.
Następnie utwórz na przykład własny folder „stages”, w którym możesz oczywiście dowolnie wybrać nazwę zgodnie z własnymi preferencjami.
Kliknij / otwórz folder.
Następnie utwórz dokument za pomocą „+”.
Znajdź nowo utworzone pole dla dokumentu i wyszukaj żądany plik na komputerze za pomocą „Przeglądarki” i prześlij go. Następnie kliknij przycisk „Zapisz”.
Jeśli chcesz zaoferować plik w innych językach, wybierz żądany inny język, a następnie żądany plik w odpowiednim języku za pomocą „Przeglądarki plików”. Kliknij ponownie „Zapisz”, a dokument będzie dostępny w nowo dodanym języku.
Następnie skopiuj identyfikator UUID dokumentu. Potrzebujesz tego, aby wstawić go do json na scenie, co odbywa się tam, jak w innych przypadkach wymienionych powyżej.
Skrypt działa w taki sposób, że jeśli istnieje identyfikator UUID, sprawdza, czy istnieje pasujący wpis w bazie danych. W takim przypadku dokument zostanie załadowany i wyświetlony. Jeśli tak nie jest, pobierana jest nazwa/ścieżka i ładowany jest odpowiedni plik. Oznacza to, że istniejące etapy nie są rozstrzeliwane.
W przypadku nowych etapów wystarczy wprowadzić identyfikator UUID i typ.
Przykład wpisu json z łączeniem plików poprzez 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) (dla przycisków)
![](https://klarland.com/wp-content/uploads/2022/05/Screenshot_6.png)
Spritesheets, używane przez apngs, są zdefiniowane w grupie„buttons„.
Pliki png zawierające arkusze sprite’ów są przechowywane na serwerze w katalogu „/files/stages/sprites”. (Jeśli chcesz korzystać z indywidualnych arkuszy sprite’ów, przekaż je swojemu menedżerowi konta klar.land, a on udostępni je na serwerze).
„buttonObjectName” to nazwa obiektu 3D w scenie. W nazwie powinien znajdować się ciąg znaków „button”. Dzięki temu obiekt zachowuje się jak przycisk. Tzn. zawsze będzie skierowany w stronę kamery, a po kliknięciu przycisk zniknie.
„spritename” to nazwa pliku png znajdującego się w „/files/stages/sprites”.
„tilesHoriz„: Liczba poziomych kafelków
„tilesVert„: Liczba pionowych kafelków
„numTiles” : zwykle jest to iloczyn dwóch poprzednich wartości. W wyjątkowych przypadkach może to być jednak inna wartość (np. jeśli na końcu znajduje się kilka pustych kafelków).
„tileDispDuration„: Liczba milisekund, przez które ma być wyświetlany kafelek.
„invisibleOnClick” : prawda lub fałsz, opcjonalnie. Wskazuje, czy przycisk staje się niewidoczny po kliknięciu, czy nie (=fałsz). Domyślnie jest to wartość true.
Przykład – 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" } ],
Mapowanie tonów
Możesz wybrać jeden z 5 trybów, aby dostosować wygląd sceny poprzez mapowanie tonów (efekt po renderowaniu).
Może to wymagać kilku testów w połączeniu z Hdr i intensywnością światła, aby uzyskać optymalny wygląd dla danego etapu.
Jeśli nic nie zostanie określone, domyślnie używany jest THREE.ACESFilmicToneMapping.
Przykład – JSON:
{ "Stage3dData": [ { "tonemapping": 2, ....
tonemapping może przyjmować wartości 0, 1, 2, 3, 4 lub 5 – przy czym
0 = THREE.NoToneMapping
1 = THREE.LinearToneMapping
2 = THREE.ReinhardToneMapping
3 = THREE.CineonToneMapping
4 = THREE.ACESFilmicToneMapping
5 = THREE.CustomToneMapping
![](https://klarland.com/wp-content/uploads/2022/07/Screenshot_4-1024x462.png)
![](https://klarland.com/wp-content/uploads/2022/07/Screenshot_3-1024x469.png)
Tekstury wideo
![](https://klarland.com/wp-content/uploads/2022/05/Screenshot_5-1024x590.png)
W przypadku tekstur wideo określane są odpowiednie nazwy obiektów 3D („videoObject„), na których mają być wyświetlane tekstury wideo, a także względna ścieżka do pliku wideo („videoFile„) na serwerze.
Filmy muszą zostać przesłane na serwer w folderze docs odpowiedniego etapu: /files/stages/[uuid]/docs
(Koordynuj przechowywanie danych z menedżerem konta klar.land).
Przykład – JSON:
"Stage3dData" :[ { "threedfile" : "01.glb", "outlinelevel" : 0, "lightsetup": 100, "spritescale": 1, "defaultqualitylevel": 0, "scenetype": "3d", "videotextures":[ { "videoObject":"_videoplane", "videoFile":"01/Freund_Demovideo.mp4" } ] } ]
opcje „kontrole”
Różne parametry do ustawiania zoomu i odległości kamer, a także przypisania przycisku myszy do sceny.
Przykład – 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” może przyjmować wartości 1 / 2 / 3. Oznaczają one
1 = Dolly (standard)
2 = ZOOM
3 = BRAK
np. 3 dezaktywuje zoom
„leftMouseMode” / „middleMouseMode” / „rightMouseMode” może przyjmować wartości 1 / 2 / 3 / 4 / 5 / 6. Oznaczają one
1 = OBRÓT
2 = CIĘŻARÓWKA
3 = OFFSET
4 = DOLLY
5 = ZOOM
6 = BRAK
Jeśli nic nie zostanie określone w kodzie JSON, wartości domyślne to
zoomMode = Dolly
leftMouseMode = ROTATE
rightMouseMode = TRUCK
middleMouseMode = DOLLY
Etapy 360
(Dokumentacja poniżej)
"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" } ] },
Dodaj komentarz