tvorbamap.cz

tvorbamap.cz

Navigace

bullet.gif

Domů


bullet.gif

Články


bullet.gif

Ke stažení


bullet.gif

Fórum


bullet.gif

FAQ



bullet.gif

Herní server


bullet.gif

Chat


bullet.gif

Převod jednotek



bullet.gif

Soutěž


bullet.gif

Síň slávy



bullet.gif

Podpořte nás


bullet.gif

Kontakt


bullet.gif

Vyhledávání


bullet.gif

RSS


Herní server

Shoutbox

Pro přidání zprávy do shoutboxu, musíte být přihlášeni.

20.06.2017 23:02:22
Jo, to je další možnost..že jsem barvoslepy, nebo úplně slepý :D ale tak byl to jen návrh:D
±0


20.06.2017 20:13:13
Udělej si test barvosleposti, já přečtu každou... :D
±0


20.06.2017 11:46:16
Měl bych takový návrh, při registraci jak je ten captcha kód, je to dělané velmi pěkně jako brushe :D ale ono to nejde přečíst vůbec, já jsem musel 30x změnit kód, abych to přečetl a bylo to správně =D
±0


19.06.2017 19:52:01
ok
±0


19.06.2017 00:25:14
Jak žijete lidi? :D Jestli teda žijete :@
±0


12.05.2017 22:22:13
Abych naštval Backapu, že má další práci, tak jsem mu tam hodil jednu prosbu.
Děkuji ;)
±0


11.05.2017 15:29:38
O hodně přicházíš :D
±0


11.05.2017 11:14:29
Jsem antisociál a na srazy nejezdím... :D
±0


10.05.2017 21:53:37
Už dlouho jsem to tu nenapsal, takže....
... zakalíme? Pívo? Dejvice nebo Jižák?
#TMsraz
±0


08.05.2017 19:32:50
dik moc
±0


VHLT 2. díl - Entity vrhají stín

(Pokročilejší tvorba)

Vítejte u druhého dílu ze série o VHLT - mocných kompilačních nástrojích.
Dnes si ukážeme, jak donutit entitu (brushovou), aby vrhala stín, dále jak tento stín vypnout/zapnout a nakonec se vyblbneme na barevných a blikajících stínech.

Opaque entity


Tato funkce byla teoreticky implementovaná už v ZHLT, ale byla totálně nepoužitelná. Entity stín sice vrhaly, ale naprosto náhodným směrem. To byla vždy zábava hledat kam se tentokrát poděl. Naštěstí tyhle doby jsou již za námi a my můžeme využívat Vluzacnovy skvělé kompilátory.
Nejdřív si vytvoříme mapu, na které můžeme dělat pokusy. Já udělal první místnost se světlem veprostřed, spawn a tři krabice, které budou vrhat stín. Každou převedeme zvlášť na func_wall. Pokud bychom mapu skompilovali, nevrhaly by žádný stín, světlo by procházelo skrz ně. Proto vlezeme do nastavení entity a všem nastavíme Light Flags na Opaque (Blocks light) (mimochodem opaque znamená neprůhledný nebo neprůsvitný). Nyní když mapu skompilujeme, tak uvidíme, že krabice vrhají stín. Nikdo by do nich neřekl, že jsou to entity. Z Light Flags nás bude vždy zajímat jenom defaultní normal, tzn. žádný stín, a Opaque (Blocks light), neboli vrhat stín. Ostatní hodnoty nic speciálního nedělají, jsou ještě ze starého ZHLT, kde stejnak nefungovaly.

Výhody opaque


Možná si říkáte, proč to nenechat jako brush a zbytečně přidělávat entity, když výsledek je stejný. V tomhle případě máte pravdu. Krychlovou krabici, pokud je zarovnaná do mřížky, je lepší nechat jako brush. Avšak opaque func_wall příjde nařadu, když je třeba optimalizovat VIS. Například válec stojící na zemi (třeba barel) nám rozřeže podlahu šíleným spůsobem (asi jako carve) a VIS se z toho může .... . Řešení bývá většinou posunutí o 1hu nahoru anebo! převedení na entitu. Entity totiž nekrájí facy, ani VIS leafy. A když máme sud na func_wall, tak proč mu nezapnout vrhání stínu, že? Na optimalizaci visu je lepší pseudoentita func_detail, která je dostupná ve VHLT od verze 25. Mimochodem, ten stín se počítá stejně jako se počítají stíny brushům, takže kompilace by se neměla zpomalit v tomhle ohledu.
Když už jsme u func_wallu, tak nemůžu nezmínit "modré" textury. Pokud zapnete vrhání stínu u func_wall s "modrou" texturou, tak bude zkrz entitu procházet světlo pouze tam, kde je "modrá". Což je hodně hodně dobrá věc, ale realita není vždy tak růžová. Vzhledem k tomu, že velikost bodu lightmapy je 16x16 nebo 8x8 (záleží na scale textury (v texture application toolu)), detailní stín drátěného plotu zrovna nečekejte. U větších děr to však dobrý efekt má.
Dalším faktem je, že opaque nemusíme nastavovat pouze func_wallům, ale jakékoli jiné brushové entitě. To se hodí nejvíce u func_breakablů, zvlášť ve spojení s vypínatelným stínem (viz dále). Samozřejmě můžeme stín nastavit i entitám jako je func_train, ale tam to nemá moc smysl, protože když vlak odjede, stín zůstane na místě, což by nevypadalo nejlépe.
A poslední, ale o nic menší výhodou je, že stín můžeme různě upravovat a hrát si s ním.

Vypínací/zapínací stín


Asi největší využití přepínacích stínu nelezneme u breakablů. To taky použiji jako první příklad. Vezměme jednu bednu a namísto func_wall jí předěláme na func_brakable. Bednu nějak pojmenujem (třeba "cube1") a v rychlosti nacvakáme materiál, strength, samozřejmě light style na opaque a jdeme rovnou na stín. Pokud jste si správně nastavili nové fgd, měli byste mít v seznamu pointových entit light_shadow. Vložíme ji kamkoli do mapy a podíváme se na nastavení. První položka je Target solid entity, tam napíšeme jméno entity, jejíž stín chceme ovládat, v našem případě "cube1". Name je klasické jméno, které budeme targetovat a tím přepínat stín, napíšeme třeba "cube1_shadow". Appearance a custom appearance probereme dále. Coring of this style jsem nikde nenašel, co to má dělat, ale souvisí to s těmi Appearance a custom appearance. Experimentálně jsem zjistil, že hodnoty se pohybují od 1 do 2 (možná i více) a čím větší je číslo, tím více se stín jakoby ukrojí. Nicméně defaultní 0.1 funguje, takže není co řešit. Kdyby někdo objevil, co to přesně dělá, ať mi prosím napíše.
Poslední položka je Classname in game, ale abyste pochopili, k čemu vlastně je, musíte pochopit jak vlastně ten přepínací stín funguje. Entita light_shadow v mapě nebude vůbec light_shadow. Half-life engin žádnou takovou entitu nezná. Tahle entita se při kompilaci přepíše na obyčejné světlo (light nebo spotlight) a nastaví se jí, aby svítila tam, kde je stín, který potřebujeme přepnout. Vlastně se jí přiřadí určitá lightmapa. Takže Classname in game není nic jiného, než výběr, na co se entita light_shadow přemění. Já jsem nenašel žádný rozdíl mezi oběma možnostmi, takže můžeme nechat light. Když to nyní skompilujeme, budeme mít v mapě kostku, která vrhá stín a přidané světlo, které vysvicuje přesně oblast toho stínu. Takže vlastně žádný stín neuvidíme :-). Vrátíme se zpátky do Hammeru a napravíme to tak, že ve flags u entity light_shadow zaškrtneme initially dark. Takže naše fake světlo bude zhasnuté a my uvídíme stín krychle. Paráda, takže teďka akorát do targetu bedny napíšeme jméno entity light_shadow, tedy "cube1_shadow" a máme hotovo. Když do bedny střelíme, rozsvítí se světlo a stín zmizí. Jak to vypadá se můžete podívat na výsledném videu.

Druhý příklad - dveře


Jedna z dalších možností, kde můžete pomocí vypínacího stínu dosáhnout dobrého efektu, jsou dveře. Já jsem na ně použil "modrou" texturu branky, abyste viděli i stín zkrz průhledný brush. Samotné dveře si nastavte jak chcete, ale musíte jim dát jméno (třeba "dvere"). Tím nám vznikne problém, protože dveře se jménem jdou otevřít pouze přez nějaký trigger. Nedá se nic dělat, musíme před ně dát trigger_multiple, nastavíme mu target na "dvere" a Delay before reset na nějakou menší hodnotu (nejlépe kolik máme delay before close u dveří). Dále vložíme opět light_shadow a nastavíme podle potřeby. Tedy Target solid entity bude "dvere", jméno třeba "dvere_shadow" a ve flags zaškrtneme initially dark. A pak stačí nastavit dveřím do target jméno light_shadow, tedy "dvere_shadow". A tím je to hotovo, když hráč přijde ke dveřím, spustí trigger_multiple, ten otevře dveře a ty, jak se otevřou, vypnou si stín. A když se zpátky zavřou, targetnou znova light_shadow a stín se jim objeví. Samozřejmě, že by to šlo i jinak, přez multimanager a správně to načasovat, ale tohle mi přijde nejjednoduší.

Kolísající stín


Zatím jsem nepřišel na praktické využití tohoto efektu, ale rozhodně to vypadá zajímavě. Jak jsem zmínil, light_shadow se chová jako obyčejné světlo, takže mu půjde nastavovat kolísání. Tedy vytvoříme nový light_shadow, přiřadíme ho ke druhé krychli (pojmenované třeba "cube2"), ale nezaškrtáváme initially dark! Samotného efektu potom docílíme výběru z možostí Appearance, nesmíme ale entitu pojmenovávat, nebo vytvoříme vlastní vzor pomocí Custom appearance, v tomhle případě musíme nastavit i name. Nebudu tu popisovat, jak to nastavit, pouze vás odkážu na můj článek o hořícím sudu, kde jsem to již vysvětloval. Musím ale zmínit, že pokud nastavíte plný rozsah, tzn od a do z nebo vyberete z Appearance, tak se dosáhne většího osvětlení, než tam, kde stín není.
Avšak toto světlo se dá pouze vypnout, takže nemůžete přepínat mezi kolísajícím a žádným stínem. Alespoň nijak jednoduše, což je škoda.

Barevný stín


Ano, je to možné, můžete nastavit barvu stínu jakkoli si přejete. Můžete ho udělat černý, jasně bílý, tmavě modrý nebo svítivě fialový. Má pouze jedinou nevýhodu a to, že se nedá ovládat pomocí light_shadow. Vlastně to není ani technicky možné. Když nastavíte bílý stín, těžko ho světlem ztmavíte. A jak ho tedy obarvit? Úplně jednoduše. Vlezeme do nastavení entity (func_wall třeba), nastavíme jí zase opaque a koukneme se na položku Custom shadow. Barvu stínu určíme pomocí modelu RGB s tím, že každá barva má rozmezí od 0 do 1. Tedy černá bude "0 0 0", bílá "1 1 1", tmavooranžová "0.2 0.2 0" nebo jasná fialová "1 0 1". Pokud RGB model neznáte (styďte se!), můžete použít například Color picker, vybrat si barvu a čísla R, G a B a vydělit 255. Ale zase se dost dobře může stát, že to přepálíte a stín bude svítit.
Tento efekt se dá využít když chcete udělat nejhnusnější mapu na světě, nebo když chcete, aby například červená látka vrhala slabší stín zbarvený do červena (hodí se až budete dělat třeba mapu fy_prádelna).

Závěr


Doufám, že se vám dnešní díl líbil a že jste se něco nového naučili. Kdyby cokoli, nebojte se zeptat v komentářích pod článkem, případně na fóru/shoutboxu.
Na závěr přidávám video s příkladovou mapou, kde si můžete prohlédnout výsledek.

↓ Příkladová mapa ↓


Omlouvám se za horší kvalitu videa, ale z nějakého důvodu mi nejde nahrávat frapsem v OpenGL módu, musel jsem přepnout na DirectX.

Komentáře

#1 |
tom711 dne 21.08.2011 20:54:56 |
+1
Fy_pradelna jdu na to :D

Ale ne clanok za jedna Xpun len tak dalej mame radi VHLT :)
#2 |
Dominio dne 21.08.2011 21:13:12 |
+1
Super! Takhle často by to chtělo vydávat články :D
Musím říst, že jsem se zas něco naučil :) +1
#3 |
XXL_cz dne 21.08.2011 23:58:16 |
±0
Další výbornej článek, jak to můžeš tak rychle za sebou psát? Ten barevnej stín a blikající stín sem neznal, možná to někde použiju.
#4 |
Gordon Freeman dne 22.08.2011 05:13:18 |
±0
vybornej clanek to s tema dverma sem videl v xxelovo mape dark_night v tom podzemi a me porad vrtalo hlavou jak na to ted uz to aspon vim
#5 |
Dominio dne 22.08.2011 07:55:51 |
±0
Mám otázku. Lže nějak udělat, aby na entitu, která má nastaveno RenderMode na Texture, byly stíny? Aby ve tmě tolik "nesvítila" .?
#6 |
Habax dne 22.08.2011 08:31:08 |
±0
Coring of this style jsem nikde nenašel, co to má dělat, ale souvisí to s těmi appearance a cunstom appearance.
máš tu chybu, vymaž n
#7 |
Xpun dne 22.08.2011 09:37:21 |
+1
Habax: Díky za upozornění, opraveno.
dominio: To bohužel nejde, engin neumí částečnou průhlednost a stíny zároveň.
#8 |
Lentilko dne 23.08.2011 06:51:23 |
±0
Supeer, to použiju :) za 1 :)

Přidat komentář

Pro přidání komentáře musíte být přihlášený.

Hodnocení

Pro hodnocení musíte být registrovaný.

Prosím přihlašte se nebo se zaregistrujte.

Výborné! Výborné! 100% [10 Hlasů]
Chvalitebné Chvalitebné 0% [Žádné hlasy]
Dobré Dobré 0% [Žádné hlasy]
Dostačující Dostačující 0% [Žádné hlasy]
Nedostačující Nedostačující 0% [Žádné hlasy]

Přihlášení

Jméno

Heslo



Nejste členem?
Zaregistrujte se!

Ztracené heslo?

Seznam článků

Diskuze fóra

Nejnovější příspěvky


bullet.gif

Problém se zbra...

(Backup)
bullet.gif

batch compiler

(Backup)
bullet.gif

problem s RAD

(Backup)
bullet.gif

problém s .pts

(Backup)
bullet.gif

Mapa se...

(Gordon Freeman)
bullet.gif

nazdar

(Backup)
bullet.gif

osvět...

(Dominik Rozporka)
bullet.gif

spawn...

(Dominik Rozporka)
bullet.gif

BOMBA

(Gordon Freeman)
bullet.gif

SourceMod Tvorb...

(EMINEM)

Odkazy

Kotelna Mix-Arena.eu - Gaming portál AMX Mod X nonsteam.cz - seznam CZ/SK Non-Steam Counter Strike serverů

Twitter & FB


Kdo je on-line

bullet.gif Hosté on-line: 2

bullet.gif Členové on-line: 0

bullet.gif Registrovaní členové: 911
bullet.gif Nejnovější člen: NoobYT