6.0 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-standingportá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..?
- Tohle platí hlavně u
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.
- 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.
BoxMesh3D mi nefunguje na hned. Ugh, nejsem si jistý proč.. ale mám dojem že ten chlapík co vyrobil ty portály by to asi zkusil. Prohlubeň možná dává smysl.
Dal by se udělat celkem jednoduchý algoritmus co by generoval mesh "s prohlubní" pro jakýkoliv nákres zepředu. Obdélník je nejjednodušší, ale udělat oblouček by asi nebyl problém.
Podobně jak se dá "kreslit" s CSG polygonem. Ale to by byl teda komplikovaný editor widget. Ty oblouky bysme asi chtěli hladké - to vypadá na něco na styl Curve editoru... ugh
Custom Mesh subclassa?
- Custom mesh subclassa je trochu divná věc. Když to všechno nastaví jeden editorový Node tak to bude asi lepší. Custom mesh se mi přegenerovává při každém spuštění, ale já chci aby se prostě "zapekl" a uložil a nazdar bazar...
Detekce teleportu
Marek Zouhar: navrhuje predikovat jestli hráč projde portálem příští frame. Tohle by mohlo řešit clipping. Protože já vlastně toho hráče doopravdy teleportuju až když je za portálem.
V tu chvilku už je pozdě!! A pak musím mít promáčklý mesh.
S tímhle bych mohl mít prostě plane mesh.
Potenciálně 2 plejny těsně za sebou abych předešel clippingu?