dp-konzultace/NOTES.md

4.5 KiB

Poznámky k implementaci

5 roomka

  • Portál který vidím skrz jiný portál se NEVYPNE, ale vidí scénu z nějakého uplně pošahaného venkovního úhlu. Protože reálně jsem od něj mega daleko, takže portálová kamera je taky daleko.

Island level

  • Dolní collider jsem musel hodně zvětšit aby skrz něj hráč neproletěl během 1 physics framu
  • Horní jsem musel trochu potočit, jinak se hráč objevil zrcadlově??
    • Zapnout/Vypnout tadyto proporční teleportování? V MC se člověk objeví asi uprostřed nether portálu i když je kde chce
  • Kdybych chtěl mesh do dveří (oblouk), možná by bylo jednodušší udělat masku než spešl mesh. Viewport je čtveratý tak jako tak.

Semafor

3 místnosti do čtverce

  • Zkusil jsem vymodelovat vlastní mesh v blenderu. Moc to nefunguje, Godot je asi zmatený z toho že on má Y-up a Blender používá Z-up. V portal repu je k tomu poznámka ale nepochopil jsem to asi.
    • Divně se na ten mesh pak projektuje ta textura kamery??
  • Možná by stálo za to udělat procedurální mesh. Nejběžnější tvar portálu bude asi obdélník
  • OnScreenNotifier3D nemůže specifikovat která kamera ten objekt vidí, takže je asi k ničemu. Portály se vidí různě navzájem, s tolika kamerama ve scéně je to nepředvídatelné trochu.
    • I když možná by to šlo pofejkovat s culling vrstvama. Vzdáváme se tím rekurzivních portálů, ale kdyby portály nerenderovaly ostatní portály, tak by se daly vypnout v momentě kdy nejsou vidět (stonks?)
  • Fejkování světel (OmniLight) by možná šlo!!! S rendering layerama bys nastavil aby některé světla byly vidět JEN skrz portály a NE tou kamerou co má hráč na sobě.
    • Tohle platí hlavně u free-standing portálů na které jde koukat z obou stran. Bylo by divné kdyby byl zezadu portálu ve vzduchu light source jenom proto, že na druhé straně portálu (bůh ví kde) takový source někde je
    • Free-standing portál neni uplně dobrý příklad, protože by to světlo mělo házet výseč ven. To ničím fajné, to jsme zpátky u raytracingu. Leda by to člověk oblbnul nějakým shadow meshem nebo něco.. hm. Velmi specifické. Ale u těch dveří jako v semaforovém levelu by to fungovalo asi v pohodě, protože kolem futer je stěna.
      • Spotlight..?

Gizmos

  • Kreslím kubickou bezierku, která spojuje portál s exit portálem, ale nevypadá to nic moc. Je to blbě vidět a hloubka se dost ztrácí.
    • Možná by bylo lepší ten exit portal highlightnout podobně jak je zrovna vybraný node - double line gizmo
  • TODO: Handly na procedurální mesh. Inspirace v godotím CollisionShape

Procedural mesh

Momentálně procedural mesh generuju helper nodem. Tohle je ideální kandidát na gizmo handles podobně jak collision shape

  • Normály jsou pass. Mám jenom 8 vertexů, takže to bude dycky vypadat blbě. Ale portály jsou stejně vždycky unshaded.
    • Zmínit v DP! Docela dobrý sell, obhajoba rozhodnutí.
  • UV coords: Když se na portál podívám přímo zepředu (ortogonálně), tak ten indent není vubec vidět. Nejsem si jistý jestli to je k něčemu.. ten portálový mesh který jsem vzal z simple portal sytem ani žádné UV coodinates nemá. Procedural mesh funguje hezky
    • Možná by se to hodilo kdyby měl portál "inactive" texturu... ale to se dá obejít placatým meshem narvaným před něj.. a neřešíš prohlubeň. Asi undefined behavior tady :D nechám na vývojářích
    • Na to kolik jsem s tím teď zabil času, tak tohle je asi nanic. Prohlubeň je extrémně důležitá featura.

portal-uv-coordinates

  • Stíny - shadow mesh tam můžu a nemusím plácnout (stejný jako hlavní). Další věc je že stíny by asi měly být na OFF a nebo DOUBLE_SIDED. Asi to nechám na uživateli.. to s meshem nesouvisí nutně.

Texture portal mask

Mám v plánu udělat texture masku pro tvarování protálů. S házením stínů to bude průser. V tomhle je přístup s tvarem meshe lepší. Měl bych nakódit generování vícero tvarů...?

Tohle asi nebude fungovat kvůli té prohlubni

  • Kdybys měl oblouk nahoře, tak nemůžeš jenom tak clipnout obdélníkový portál. Kdyby byl plochý, tak jo. Ale takhle bude ten okraj nahoře jakoby zabořený a nebude to pěkné (asi). Zvlášť v rožkách.

Tohle asi řeší tenký box s culling- off jak měl Sebastian ve svém Unity videu. Akorát to žere trochu renderingu.. ale v porovnání s X kamerama navíc je to asi fuk.