Skip to content

Assets

HederaJS.fetchAndLoadAssets(url, type)

Camera Setup

La "Camera" rappresenta il punto di vista sulla scena 3d, è un oggetto già creato in Hedera in fase di inizializzazione e vi si accede tramite una serei di metodi che ne definiscono eventi e caratteristiche. I "punti di vista" supportati sono due: orbitale rispetto ad un punto "target" e in "prima persona".

Orientamento assi principali

Hedera è conforme alle impostazioni date dallo standard OpenGL.

alt text

Impostazione proiezione prospettica

HederaJS.world.setCameraProjectionPerspective(fildOfView, nearPlane, farPlane)
- fildOfView: l'angolo del campo visivo

  • nearPlane | farPlane: descrivono lo spazio da visualizzare contenunto tra i due parametri che definiscono rispettivamente la distanza minima e massima dalla camera

Viene definita solo la modalità di ripresa della scena, non la posizione ne il movimento della camera. La camera di default viene quindi creata al centro degli assi, pertanto è posssibile che oggetti sovrapposti alla camera sull'origine non vengano "ripresi".

alt text

First person view

La camera riprende i movimenti di una ripresa in soggettiva seguendo l'approccio "Aircraft principal axes", in cuil la rotazione in tre dimensioni è data dall'interazione dei tre assi denominati: "yaw", "pitch" e "roll".

alt text

HederaJS.world.setRotationCameraFirstPersonView( yaw,  pitch,  roll,  speed)
Imposta la rotazione della camera.

HederaJS.world.rotateCameraFirstPersonView( yaw,  pitch,  roll,  speed)
Incrementa la rotazione della camera

HederaJS.world.updateCameraFirstPersonView(smooth)

Aggiorna la rotazione della camera

HederaJS.world.firstPersonViewSetPosition(x,y,z)
Imposta la posizione della camera

HederaJS.world.firstPersonViewWalk(t)
Sposta la camera in avanti o in dietro rispetto alla direzione di osservazione

HederaJS.world.firstPersonViewStrafe(t)
Sposta la camera a destra o a sinsitra rispetto alla direzione di osservazione

HederaJS.world.firstPersonViewLift(t)
Sposta la camera a in alto o in basso rispetto alla direzione di osservazione

Orbit view

La camera si muove seguendo coordinate sferiche attorno ad un oggeto "target".

alt text

HederaJS.world.setCamerOrbitViewPitchLimits(min, max)

HederaJS.world.setTargetCameraOrbitView(x,y,z, distance)
- x y z: posizione dell' oggetto "target" - distance: distanza dall' oggetto "target"

HederaJS.world.translateCameraOrbitView(lat,long, speed)
  • lat long: spostano la camera sull'orbita attorno al punto dato
  • speed: se animata imposta la velocità di rotazione

HederaJS.world.updateCameraOrbitView()
Aggiorna gli attributi della camera e li trasmette al resto della scena.

Get axis

HederaJS.world.getCameraPitch()

restituisce l'angolo di rotazione attorno all'asse x

HederaJS.world.getCameraYaw()
restituisce l'angolo di rotazione attorno all'asse y

HederaJS.world.getCameraRoll(vod)

restituisce l'angolo di rotazione attorno all'asse z

Entity

HederaJS.world.getEntity(name)
- name: prende una stringa come parametro formale e restituisce l'oggetto entity riferito al nome.

HederaJS.world.entityExists(entity)
Restituisce true o false in base all'esito della ricerca

HederaJS.world.attachComponentRenderer(entity)
Aggiunge un oggetto "entity" alla coda di rendering per essere disegnato. In caso di una scena descritta a partire da un file ".glb", tutti gli oggetti persenti nel file verranno automaticamente aggiunti alla coda di rendering.

HederaJS.world.removeComponentRenderer(entity)
Rimuove un oggetto "entity" alla coda di rendering per essere disegnato. Naturalmente l'oggetto non verrà eliminato dalla scena, potrà esssere reso visibile in qualisasi momento aggiungendolo nuovamente alla coda di rendering.

Transform

position

HederaJS.world.translate(entity, x,y,z)
Modifica la posizione di un oggetto sommando alle sue coordinate i parametri x,y,z.

HederaJS.world.setPosition(entity, x,y,z)
Imposta la posizione di un oggetto.

HederaJS.world.setSphericalPosition(entity, lat, lon, distance)
Imposta la posizione di un oggetto in coordinate sferiche attorno al centro degli assi della scena.

HederaJS.world.setSphericalPositionTarget(entity, x,y, target, distance)
Imposta la posizione di un oggetto in coordinate sferiche attorno ad un punto °"target".

rotation

HederaJS.world.rotate(entity, x,y,z)

Modifica la rotazione di un oggetto combinando i valori (gradi) dei parametri formali.

HederaJS.world.setRotation(entity, x,y,z)
Imposta la rotazione.

HederaJS.world.followView(entity)
Modifica la rotazione di un oggetto, mantenendolo sempre perpendicolare al punto di vista.

scale

HederaJS.world.scale(entity, x,y,z)
Modifica la scala di un oggetto moltiplicando le sue dimensioni per i parametri x,y,z.

HederaJS.world.setScale(entity, x,y,z)
Imposta la scala di un oggetto

orientation

HederaJS.world.getEntiyCameraAngleRad(entity)
HederaJS.world.getEntiyCameraAngleDeg(entity)
Restituisce l'angolo tra il punto di vista e un oggetto entity.

HederaJS.world.getEntiyEntityAngleRad(entity, entity)
HederaJS.world.getEntiyEntityAngleDeg(entity, entity)
Restituisce l'angolo tra due oggetti entity.

Selection

By color id

HederaJS.world.enableOnScreenSelection()
Basta effettuare la chiamata una sola volta in fase di inizializzazione della scena corrente. Questo sistema userà un "color id" assegnato a tutti gli ementi inseriti nella coda di rendering per disegnare su un secondo livello non visibile a schermo. In risposta ad un evento verrà catturato il colore sottostane il punto su schermo selezionato.

alt text

HederaJS.world.selectOnScreen(entity, x, y)

Disegna ed effettua il controllo su un solo oggetto "entity", ritorna "0" o "1" in base all'esito del confronto tra il "color-id" e il colore associato alla selezione.

entity: indica l'oggetto "entity" da associare alla selezione. x, y: la posizione corrente del mouse o di una "gesture".

HederaJS.world.searchOnScreen(x,y)
Disegna tutta la scena e restitusice un oggetto "entity". Quest'utlimo sarà vuoto se la ricerca avrà esito negativo. x, y: la posizione corrente del mouse o di una "gesture".

Render Components

3DEra supporta la descrizione dei materiali PBR (Physically Based Rendering), seguendo le spedifiche gltf

Nella maggior parte delle funzioni viene chiesto di specificare il parametro formale "primitiveIndex". Questo parametro si riferisce al fatto che un oggetto entity può riferisi ad un modllo 3d complesso composto da più geometrie (primiitve), ognuno con un prorio materiale.

 changeComponentColor(entity, primitiveIndex, r,g,b,a)
HederaJS.world.changeComponentAlpha(entity, primitiveIndex, value)
HederaJS.world.changeComponentBaseColorTexture(entity, primitiveIndex, image)
HederaJS.world.changeComponentOrmTexture(entity, primitiveIndex, image)
HederaJS.world.changeComponentNormalTexture(entity, primitive, image)
HederaJS.world.replaceImageTextureBase64(name, base64, linebreaks, alpha)
HederaJS.world.replaceImageTextureBpm(name, src,  w,  h,  c, bool alpha)
HederaJS.world.replaceImageTexture(name, src, alpha)
HederaJS.world.replaceTextureWithHeightMap64(name, _base64, linebreaks, strength, alpha)
HederaJS.world.replaceTextureWithHeightMap(name, src, strength, alpha)