[PHP] Cubemap naar sphere

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • cdl
  • Registratie: Mei 2003
  • Laatst online: 25-07 12:05
Goedemiddag!
Bij ons op kantoor creeren we 3D scenes in een 3D applicatie om vervolgens artist impressions of animatie te renderen. Ook is het mogelijk om vanuit deze applicatie een cubemap te genereren voor het bekijken in een 360 graden viewer, voorbeeld cubemap:
Afbeeldingslocatie: https://upload.wikimedia.org/wikipedia/commons/b/b4/Skybox_example.png

Nou gebruiken wij binnenkort een nieuwe 360 graden viewer, http://krpano.com/
Dit systeem vereist echter geen cubemap maar een sphere map. Met krpano wordt een batch file meegeleverd om een cubemap naar sphere map om te zetten. Voorbeeld sphere map:
Afbeeldingslocatie: http://i.stack.imgur.com/ZH9Op.jpg

De 6 kanten van de cubemap heb ik als losse jpg's staan. De conversie naar een sphere map wil ik graag online doen met PHP. Is er een PHP class die 6 losse jpg's omzet naar een spheremap? Ik kan deze in ieder geval niet vinden.

Nog wat wiskundige referenties:
http://mathproofs.blogspo...pping-cube-to-sphere.html
http://stackoverflow.com/...apping-a-sphere-to-a-cube

Dat zeg ik!


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:16

.oisyn

Moderator Devschuur®

Demotivational Speaker

Als je doel is om gewoon een stukje code te vinden die dit voor je doet sluit ik je topic, want daar zitten we niet echt op te wachten (Devschuur® Beleid). Google is je vriend.

Als je het daarentegen zelf wilt implementeren is je topic potentieel heel interessant, maar zul je toch iets meer voorwerk moeten doen. Aan jou de keuze ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:16

.oisyn

Moderator Devschuur®

Demotivational Speaker

Om dan maar een duit in het zakje te doen, eigenlijk is het heel simpel. Het plaatje stelt elke pixelcoordinaat waarschijnlijk een longitude (x) en latitude (y) voor. Die kun je omzetten in een 3D vector, en met die 3D vector kun je de lookup doen in de cubemap. Die lookup is eigenlijk simpelweg: schiet een ray vanuit het midden van een kubus in de richting van die vector, en daar waar hij de rand van de kubus raakt is de pixel die je moet hebben.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • cdl
  • Registratie: Mei 2003
  • Laatst online: 25-07 12:05
De denkwijze is volgens mij helemaal correct. Dat betekent dat je dan voor elke pixel in de cubemap een lookup zou moeten doen om de nieuwe x en y te berekenen? Dit zou dan met de GD library in PHP gedaan kunnen worden. Maar lijkt mij een behoorlijke belasting voor PHP.
In http://stackoverflow.com/...apping-a-sphere-to-a-cube staan wat interessante functies. Ik ga er zelf mee stoeien en probeer een implementatie in PHP te maken.

Dat zeg ik!


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:16

.oisyn

Moderator Devschuur®

Demotivational Speaker

cdl schreef op vrijdag 24 juli 2015 @ 09:28:
De denkwijze is volgens mij helemaal correct. Dat betekent dat je dan voor elke pixel in de cubemap een lookup zou moeten doen om de nieuwe x en y te berekenen?
Andersom. Het probleem met die aanpak is dat je gaten krijgt omdat je niet elke pixel in de spheremap vult. Daarom kun je het beter doen zoals ik beschreef: loop over alle pixels in de spheremap, en doe de bijbehorende lookup in de cubemap zodat je weet welke kleur de pixel moet worden.

Voor een goed resultaat zul je de lookups in de cubemap op z'n minst wel moeten bilinear filteren (waarbij je het uiteindelijke lookup coordinaat dus niet converteert naar integer-waarden en een enkele pixel ophaalt, maar dat je pixels gaat middelen op het moment dat je ergens tussen een groepje van 2x2 pixels in zit). Voor een nog beter resultaat doe je meerdere samples per spheremap pixel.
In http://stackoverflow.com/...apping-a-sphere-to-a-cube staan wat interessante functies. Ik ga er zelf mee stoeien en probeer een implementatie in PHP te maken.
d:)b

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22:32

Janoz

Moderator Devschuur®

!litemod

Het lijkt me trouwens handiger om dit niet met php te gaan doen. Met Java of C++ zal dit een stuk prettiger werken. Als het perse online moet dan zou je die implementatie vervolgens via php aan kunnen roepen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1