Jak dodawać animacje, interakcje i wiele innych dostosowań do środowiska 3D za pomocą pliku JSON.

·

·

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.

Pole tekstowe JSON (zalecenie: utwórz JSON w edytorze kodu/tekstu, np. notepad++ i wklej go tutaj).

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/…)

Wideo uruchamiane przez kliknięcie przycisku lub obiektu

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)

Przyciski na scenie animowane za pomocą arkuszy sprite’ów

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

Flat Stage z ReinhardToneMapping / „tonemapping”: 2

Flat Stage z ACESFilmicToneMapping / „tonemapping”: 4 lub brak specyfikacji

Tekstury wideo

Tekstury wideo w scenie

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

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *