Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
-
30. září 2024
-
4. října 2024
-
14. listopadu 2024
-
11. prosince 2024
Design
Autodesk Maya 2011: Skákací žabka, díl třetí – materiály, textury, nasvícení a animace
29. června 2010, 00.00 | Minule jsme dokončili modelování naší žabky a dnes je na čase ji oživit. Prvním krokem bude přidání materiálů a textur, přičemž se seznámíme se základy Hypershade editoru. Poté vytvoříme a nasvítíme jednoduché prostředí, ve kterém se bude žabka pohybovat v závěrečné části tohoto článku, kdy se naučíme, jak vytvořit jednoduchou animaci.
Začneme trochou teorie. Již jsem se zmínil o materiálech – ve světě 3D grafiky se tak označuje souhrn vlastností, přiřazených určitému objektu nebo jeho části, které ovlivňují jeho výsledný vzhled. Je to například barva, průhlednost, schopnost odrážet světlo a mnohé další. Dále jsem použil pojem textura, což, je – opět v prostředí 3D grafiky – zjednodušeně řečeno obrázek, který se namapuje na povrch zvoleného objektu a opět ovlivňuje jeho výsledný vzhled.
A nyní zpět do praxe. Otevřeme si tedy soubor z minula, případně si stáhneme dokončený model zde, a opět si přizpůsobíme rozhraní Mayi. V první fázi, kdy budeme přidávat materiály a textury, strávíme většinu času v jednopohledovém zobrazení 3D scény, které zvolíme kliknutím na ikonku . Dále budeme potřebovat takzvaný Hypershade editor, tedy editor materiálů. Ten otevřeme z nabídky Window -> Rendering Editors -> Hypershade.
Materiály
Podíváme-li se na předlohu, objevíme tři rozdílné povrchy:
- hladký, velmi lesklý plech na horní polovině těla, potištěný jednoduchou grafikou
- hladký, matný povrch spodní poloviny těla, který má stálou barvu
- nožky a vnitřní mechaniku z lesklého stříbrného kovu s hrubší strukturou povrchu
Každý z těchto povrchů si nyní připravíme jako samostatný materiál, tzv. shader v prostředí Hypershade editoru, přičemž opět vyjdeme z předdefinovaných typů, které nám Maya nabízí. Následující stručný výčet se omezí pouze na ty základní:
- Anisotropic – vhodný pro materiály s jemným rýhováním na povrchu, např. broušený kov
- Blinn – vhodný jako základ pro lesklé materiály s jemnými odlesky (plast, kovy)
- Lambert – vhodný pro matné povrchy bez odlesků (dřevo, omítka)
- Phong – vhodný jako základ pro vysoce lesklé povrchy (sklo, kovy)
- Phong E – varianta Phong s jemnějšími odlesky (plasty, kůže) a méně náročná na výpočet
Nejjednodušším materiálem, kterým také začneme, je spodní polovina těla. Ze seznamu vybereme shader typu Blinn a dvojklikem na něj vytvoříme nový materiál tohoto typu. Objeví se nám jak v seznamu všech materiálů, tak na pracovní ploše. Když na něj opět dvakrát klikneme, v hlavním okně Mayi se otevře Attribute editor, kde lze nastavit další parametry tohoto materiálu:
Začneme názvem, přestože nebudeme mít tolik materiálů, abychom se v nich ztratili, je dobrý zvyk mít všechny materiály nějak logicky pojmenované. Přepíšeme tedy název například na zabka_spodek a podíváme se na další parametry. Nejdůležitějším bude barva, klikneme tedy na políčko u hodnoty color a v color editoru vybereme něco mezi šedou, zelenou a bronzovou, třeba R=134 G=132 B=93. Dále tu máme parametry Eccentricity a Specular Color. Ten první udává velikost odlesku na povrchu modelu; čím menší je hodnota, tím lesklejší materiál. Specular Color je pak barva odraženého světla; změníme implicitní šedou na světlejší verzi barvy, kterou jsme nastavili pro povrch objektu. Posledním pro nás důležitým parametrem je Reflectivity, který udává, nakolik se v materiálu bude odrážet okolí – čím nižší hodnota, tím bude odraz slabší. Nám postačí 0.1. Tím bychom měli náš první materiál hotov, teď je na řadě přiřadit ho správné části objektu. V 3D okně tedy vybereme model žabky, [F11] a dvojklikem na jakýkoliv face spodní části těla ji celou vybereme. V okně Hypershade editoru klikneme na materiál zabka_spodek pravým tlačítkem myši a zvolíme Assign Material To Selection. Jednoduché, že? Zopakujeme si to s přiřazením stejného materiálu ještě části modelu, která znázorňuje vnitřek žabky – mechaniku.
V pořadí druhým materiálem bude ten pro horní část těla. Na něm si vyzkoušíme, jak objektu přidat texturu pomocí UV mapování. Nejprve vytvoříme nový materiál typu Phong, jemuž nastavíme Roughness („hrubost“ povrchu) 0,2; Highlight Size (velikost odlesku) 0,5 a Reflectivity 0,2. Taktéž zesvětlíme Specular color. U parametru Color klikneme na ikonku „vlaječky“ (flag) , čímž Maye sdělíme, že chceme tento parametr ovlivňovat pomocí textury, což je možné u všech takto označených parametrů. Objeví se nám nové okno se seznamem dostupných textur, a protože jsme si texturu připravili v 2D programu jako samostatný PNG soubor, zvolíme File:
Pokud se nechcete zdržovat s tvorbou textury, můžete si zde stáhnout mou.
Na pracovní ploše Hypershade editoru se objeví další Nodes („Uzly“), udávající vlastnosti materiálu, a to File1 a Place2DTexture1. Jakýkoliv, byť jen trochu složitější materiál, je složen z více takovýchto uzlů, které si pomocí vzájemných propojení předávají určité vlastnosti (barva, průhlednost, umístění textury, typ textury atd.) a ovlivňují tak výsledný vzhled materiálu. Nás nyní zajímá především node File1, protože pomocí něj řekneme Maye, jaký soubor chceme jako texturu použít. Klikneme tedy na tento node a v Attribute editoru zvolíme cestu k souboru:
Nyní přiřadíme materiál horní polovině těla ([F11] vybereme příslušné faces, RMB na materiál v Hypershade editoru -> Assign Material To Selection) a klávesou [6] zapneme zobrazování textur v 3D okně. Vidíme, že textura určitě není správně umístěna:
Ovšem to snadno napravíme pomocí promítnutí textury na model. Z horního menu nebo přes Hotbox zvolíme Create UVs -> Cylidrical projection a v 3D okně se objeví nový „manipulátor“, znázorňující plochu, ze které je naše textura promítána na model. Zároveň můžeme parametry promítání zadávat číselně v Attribute editoru:
Na „manipulátor“ projekce nefungují běžné nástroje (Move, Scale, Rotate). Rotaci proto zadáme ručně, a to -90° podle osy X, aby se promítalo směrem dolů na model, a také 180° podle osy Y, to aby měla textura správnou orientaci, tj. aby oči byly vpředu. Nyní potáhnutím za jeden ze zelených konců nastavíme v bočním pohledu délku tak, aby byla stejná jako tělo žabky a textura se promítala správně v celé délce (zkontrolujeme v 3D pohledu). Dále musíme správně umístit střed promítání (Projection Center), buď posunem celého manipulátoru v 3D okně, nebo číselným zadáním v Attribute editoru. Je potřeba ho posunout o kousek dopředu a směrem dolů. Také zvětšíme úhel promítání na nějakých 195° a pohledem v 3D okně zkontrolujeme, zda se nám textura promítá rovnoměrně na celý povrch a nedochází nikde k její deformaci nebo opakování. Pokud ano, doladíme zejména Projection Centre (pozor na správnou výšku, střed promítání musí být kousek pod úrovní celé části modelu) a Projection Height (výška, i když v našem případě spíše délka promítání). Nezapomeneme node pojmenovat, např. jako soubor textury - tedy zaba_telo_h. Můj výsledek, spolu s hodnotami pro model, který jste si mohli stáhnout, je zde:
Posledním materiálem pro žabku bude kov na nožičky. V Hypershade editoru tedy vytvoříme nový materiál, jehož základem bude shader Anisotropic. Barvu nastavíme modrošedou, např. R=175 G=191 B=191. Spread X a Y (velikost a ostrost odlesku) nastavíme na 9.0, resp. 4.0 a Roughness na 0.8. Nakonec ještě zesvětlíme Specular Color. Opět přiřadíme materiál, tentokrát však rovnou celému objektu:
Základ materiálu bychom měli, zbývá znázornit nepravidelnou strukturu povrchu. Toho docílíme za pomocí tzv. bump mappingu, což je způsob mapování černobílé textury na objekt tak, že textura se stane „výškovou mapou“ – čím tmavší barva, tím větší „prohlubeň“ na objektu, a naopak. Bump mapping je pouze optický klam, vlastní model neovlivňuje.
Pro přiřazení textury klikneme na ikonku ve vlastnostech materiálu nožiček u položky Bump mapping, tentokrát však nezvolíme File, ale použijeme jednu z procedurálních textur, které Maya standardně obsahuje. Vybereme ze seznamu Fractal a opět vidíme, že na pracovní plochu Hypershade editoru přibyly nové nodes, a to bump2d1 a Fractal1. Ten první určuje sílu Bump efektu (tedy to, jak výrazný bude rozdíl mezi „nejvyšším“ a „nejnižším“ bodem), ten druhý pak výsledný vzhled textury. Jednotlivé parametry opět nastavujeme v Attribute editoru. Začneme názvem, Fractal1 přejmenujeme např. na zabka_nohy_bump a bump1 na bump_nohy. Sílu Bump mappingu nastavíme v node bump_nohy na hodnotu cca 0.1 (čím větší číslo, tím bude efekt výraznější). Náhled výsledku získáme, pokud zapneme High Quality zobrazení v 3D okně, a to ikonkou v jeho záhlaví. V node zabka_nohy_bump nastavíme vzhled Fractal textury pomocí parametrů Amplitude = 0.35 a Frequency Ratio = 6 (velikost textury):
Nyní je ještě potřeba nastavit správné mapování pro celý objekt, protože jak při bližším pohledu zjistíme, textura je po povrchu objektu „rozmázlá“. Použijeme opět projekci jako v minulém případě, nyní ovšem zvolíme Automatic Projection. Při použité této metody se textura promítá z několika (implicitně šesti) čtverců/obdélníků, jejichž polohu a velikost můžeme pomocí podobného manipulátoru, jako má např. Extrude, změnit, což také uděláme. Nastavíme velikost a pozici všech ploch tak, aby pokrývaly celou plochu nožiček:
Tím bychom konečně dokončili samotnou žabku a nyní je na čase umístit ji do nějakého prostředí. Nebude to nic světoborného, vytvoříme pouze jednoduchý povrch, po kterém se naše žabka bude nakonec pohybovat.
Základem bude objekt typu Plane (Create -> Polygon Primitives -> Plane), který patřičně zvětšíme. Nezapomeneme ho pojmenovat a posunout pod model žabky. Poté mu přiřadíme nový materiál, vytvořený na základě shaderu Lambert. Barvu nastavíme na bílou, parametr Diffuse (schopnost odrážet světlo) pak na hodnotu 1.0
Nasvícení a rendering
Scénu bychom měli, nyní si ji zkusíme poprvé vyrenderovat. Klikneme tedy na ikonku v horním menu a chvilku počkáme:
Nic moc. Žabka levituje a není vyhlazená, ale hranatá, chybí světla a stíny a vůbec to vypadá jako obrázek z počítačové hry někdy z dob krále Klacka, s čímž se rozhodně nespokojíme.
Nejprve to vyhlazení. Interní softwarový renderer Mayi nepodporuje přímé renderování vyhlazeného zobrazení ([3]) modelu, to umožňuje pouze externí renderer Mental Ray. Jeho popis je ovšem téma na samostatný seriál, proto se jím dnes zaobírat nebudeme a namísto toho vyhladíme přímo model žabky, a to pomocí nástroje Subdiv Proxy. Vybereme tedy oba objekty, které tvoří žabku, a stiskneme [1] pro zobrazení nevyhlazeného, původního modelu. Poté vybereme tělo v horním menu nebo přes Hotbox zvolíme Proxy -> Subdiv Proxy -> pro zobrazení okna s parametry. Zaškrtneme Inherit smooth mesh preview (výsledný vzhled bude stejný, jako náhled pomocí [3]), Mirror behavior nastavíme na None (zrcadlovou kopii vytvářet nepotřebujeme), Subdiv Proxy shader nastavíme na None a nezapomeneme zaškrtnout Subdiv Proxy renderable, aby se nám výsledný objekt na renderu zobrazil, a klikneme na Apply:
Okno s parametry nezavíráme, ale vybereme v 3D okně nohy a opět klikneme na Apply, abychom stejné nastavení aplikovali i na ně. Poté můžeme okno zavřít. Zkusíme scénu opět vyrenderovat, vyhlazení bychom měli mít v pořádku. Zbytek ale stále nic moc. Napravíme „levitování“ žabky – vybereme žabku i nohy a natočíme je tak, aby žabka seděla na „podlaze“:
Druhým faktorem, který způsobuje ono zdání levitace, je absence stínů. Abychom mohli mít stíny, musíme mít nějaká světla, která je budou vrhat, což jediné světlo přítomné v současnosti ve scéně (Maya Default light) neumí. Přidáme tedy jedno světlo typu Directional Light, které vrhá rovnoběžný svazek paprsků tím směrem, kterým ho natočíme standardním způsobem za pomoci manipulátorů. Náhled jeho účinku ve scéně získáme po stisknutí klávesy [7]:
V Attribute editoru můžeme nastavit barvu světla a také jeho intenzitu, zatím můžeme ponechat implicitní hodnoty. Zároveň také zapneme výpočet stínů pro toto světlo, a to v sekci Shadows. Máme na výběr ze dvou typů, Buffered nebo Raytraced. První typ je rychlejší, druhý je za cenu vyšších výpočetních nároků fyzikálně přesnější a vypadá lépe. Zaškrtneme Raytraced. Ještě nastavíme barvu stínů z černé na tmavě šedou, aby stíny nebyly tak tvrdé. Aby se však tyto stíny zobrazily na výsledném obrázku, musíme aktivovat Raytracing, což uděláme v okně render settings, kam se dostaneme po kliknutí na ikonku na Rendering záložce Shelf-u:
Na záložce Custom najdeme sekci Raytracing quality a v ní zaškrtneme „Raytracing“, zkusíme vyrenderovat:
Není to ideální, pro trochu realističtější vzhled můžeme změnit typ světla z Directional na Area (plošné světlo), které pomocí nástroje Scale [R] zvětšíme (čím větší plocha, ze které se emituje světlo, tím bude výsledný obrázek prosvětlenější):
Neděste se šumu ve stínech, toho se záhy zbavíme. Celá scéna ale ještě působí poměrně tmavě, proto do ní přidáme ještě jedno pomocné světlo – Directional Light směřující kolmo dolů, které nebude vrhat stíny. Area Light také posuneme o něco výš, aby nám nevytvářelo „přepal“ na podlaze scény, a v Attribude editoru mu v sekci Shadow zvýšíme parametr Shadow Rays (počet počítaných paprsků světla, čím vyšší číslo, tím jemnější a přesnější stíny) na 6. V Render Settings také v sekci Quality nastavíme Production, čímž zvýšíme výslednou kvalitu výstupu. Výsledný render je zde:
Nastal čas doladit materiály, zejména horní polovinu těla a nohy. U prvně jmenovaného snížíme Roughness na 0.05 a Highlight size nastavíme 0.2. U nohou pak změníme nastavení textury, takže si zobrazíme všechny nody (v Hypershade RMB na náhled materiálu zabka_nohy -> Graph Network, dvojklikem na node zabka_nohy_bump se nám otevře Attribute editor, kde můžeme upravit parametr Frequnecy Ratio na 13.
Určitě jste si všimli, že pokaždé, když kliknete na tlačítko Render Current Frame, Maya vyrenderuje obrázek z aktuálního pohledu. To není úplně praktické, chceme-li mít stále stejný úhel a velikost záběru. Proto přidáme a nastavíme kameru a taky uděláme něco s tím depresivně černým pozadím.
Kameru vložíme do scény jako jakýkoliv jiný objekt, tedy Create -> Camera and Aim. Tento typ kamery má navíc ještě kontrolu „zamíření“ – tam, kam umístíme „záměrný bod“ (Aim), bude kamera zaměřovat vždy, ať ji natočíme, oddálíme, posuneme apod. Stejně tak, pokud budeme pohyb Aim animovat, bude se kamera plynule otáčet za ním. Nejprve tedy celou kameru posuneme někam vlevo dopředu od žabky a poté Aim přesuneme do jejího středu:
Doladění záběru provedeme tak, že si zapneme místo perspektivního pohled přímo z kamery – v záhlaví okna klikneme na Panels -> Perspective -> Camera1 a stejným způsobem, jako s pohledem hýbeme normálně nastavíme požadovaný záběr:
Nezapomeneme opět přepnout na perspektivní zobrazení (Panels -> Perspective -> persp), abychom už záběr např. omylem nezměnili. V okně renderu nyní můžeme renderovat z pohledu naší kamery pro render, což uděláme kliknutím na Render -> Camera1 v Render Window. Zbývá nastavit barvu pozadí. Vybereme tedy kameru a v Attribude editoru na záložce Camera1Shape sjedeme k sekci Environment, kde nastavíme barvu dle libosti. Já jsem zvolil šedou, aby pozadí trochu splývalo s podlahou scény:
Animace
A na závěr naši žabku rozskáčeme! Nebude to nic složitého, nebudeme totiž žabce vytvářet kostru, ani nic podobného.
Základem animace (nejen) v Maye jsou tzv. klíčové snímky. Snímek si představte jako políčko filmu nebo obrázek, kterých za jednu vteřinu proběhne na obrazovce 25x (pro jednoduchost, existuje řada jiných standardů s frekvencí snímků např. 24 nebo 30). Klíčový snímek je takový, který uvozuje, nebo ukončuje nějaký pohyb; definuje nějak významnou pozici objektu. Snímky ležící mezi klíčovými, a tím pádem i pozici, velikost a natočení objektů, Maya dopočítá sama, čímž nám výrazně ulehčí práci.
Než začneme animovat, přizpůsobíme si patřičně rozhraní Mayi. Zobrazíme si kdysi vypnutý Time slider a Range Slider a přepneme do 4pohledového zobrazení; horní menu přepneme na Animation.
Příprava modelu
Smažeme konstrukční historii celé scény pomocí Edit -> Delete All by type -> History . Poté smažeme zbytek původního modelu, pozůstatek aplikace Subdiv Proxy (je to ten hranatý a méně detailní model):
Zkontrolujeme, že vlastní žabku tvoří pouze dva objekty, a to tělo a nožky. Pokud tomu tak není, spojíme/rozdělíme je výběrem odpovídajících částí s použitím nástrojů Mesh -> Combine, resp. Separate. Kliknutím na ikonku zapneme zobrazení 3D okna a Outlineru, což je jakýsi seznam všech objektů ve scéně. Vybereme tělo i nožičky a [Ctrl]+[G] z nich utvoříme skupinu, kterou v Outlineru pojmenujeme Zabka. Skupina obsahuje oba původní objekty, tedy zabka_vrsek i zabka_nozicky, a poslouží, až je budeme chtít animovat oba naráz:
Skáčeme!
Necháme žabku přeskákat přes část naší scény, a protože kdyby skákala jen tak, přímo, byla by to nuda, necháme ji skákat nějak cik-cak. Nebudeme ale celý pohyb animovat ručně, vytvoříme pouze první skok a poté ho necháme opakovat podél křivky, která bude určovat tvar dráhy.
Nejprve tedy v horním pohledu vložíme EP Curve (Create -> EP Curve Tool). První bod vložíme „dovnitř“ žabky a poté postupujeme ve směru, kterým chceme, aby se hýbala, třeba takto:
Dále musíme žabce „říci“, aby se po křivce pohybovala. Vybereme tedy v Outliner-u skupinu Zabku a poté křivku a následně v menu Animation; Animate -> Motion Path -> Attach to Motion Path -> . V okně s parametry nastavíme rozsah (Range) na „Time Slider“ – tedy po celou dobu animace, kterou ještě nastavíme. Zaškrtneme „Follow“ a správně nastavíme osy, tj. Front Axis na „Z“ a Up Axis na „Y“ a klikneme na Attach. Pokud jste vše udělali správně, po kliknutí na Play by se žabka měla posouvat podél křivky.
Posledním krokem bude rozhýbání žabky, tedy animování samotného skoku. Přesuneme se na začátek animace, tj. na první políčko na Time Slider-u, vybereme celou žabku a stiskneme [S]. Tím jsme vložili první klíčový snímek jak pro tělo, tak nohy, což poznáme tak, že políčka v Channel Boxu se podbarví červeně a stejně tak se objeví červená značka na Time Slider-u. Pokud odteď na klíčovém snímku provedeme nějakou operaci s objektem, budeme změnu opět muset uložit stiskem [S]. Vybereme tedy tělo a natočíme ho tak, abychom nos žabky naklopili dolů, jako když se krčí a připravuje se ke skoku, a stiskneme [S]:
Posuneme se na frame číslo 3, celou žabku posuneme nahoru, poté tělo natočíme směrem nahoru a nohy naopak směrem dolů. [S] opět uložíme keyframe.
Posuneme se na frame číslo 4, celou žabku posuneme kousek níž (ne však do výchozí pozice) a nohy zvedeme nahoru a ]S] vložíme keyframe:
Posuneme se na frame číslo 6 a znázorníme doskok, nohy se tedy budou dotýkat podlahy a tělo bude stále trochu zvednuté. Nezapomeneme pozici opět uložit jako klíčový snímek [S]:
Pokud klikneme na play, žabka by měla udělat první skok. Další už nebudeme animovat ručně, ale pěkně Maye řekneme, že má první čtyři klíčové snímky opakovat podél celé délky křivky. K tomu budeme potřebovat nástroj zvaný Graph editor, který můžeme otevřít buď kliknutím na nebo jako samostatné okno přes Window -> Animation Editors -> Graph editor. V 3D okně vybereme tělo i nožičky a v Graph editoru klikneme na Curves -> Post Infinity -> Cycle. Kliknutím na Play ověříme, že žabka skáče podél celé křivky.
Zbývá nastavit délku animace, řekněme, že to bude 5 vteřin. Za vteřinu proběhne 25 snímků, 5*25=125, do políček End Time a Playback Range v Time Slider-u tedy vepíšeme 125:
Žabka nám ovšem celou křivku přeskáče za 24 snímků a to se nám nelíbí, takže vybereme křivku a v okně Graph editoru si ji klikáním na postupně rozklikneme, poté na řádku positionMarkerShape2 dvakrát klikneme na ikonku , čímž se nám otevřou vlastnosti koncového bodu Motion path v Attribute editoru. Pouze přepíšeme hodnotu Time z 24 na 125 a je to.
Na závěr budeme animovat kameru, nebo přesněji její Aim. Vrátíme se na první políčko animace, vybereme Aim, [S] uložíme keyframe. Poté se přesuneme na frame 125, Aim přesuneme opět někam do těla žabky a [S] uložíme keyframe. Pomocí Panels -> perspective -> Camera1 přepneme do pohledu kamery a zkontrolujeme, zda je záběr v pořádku, případně pozici kamery (zejména vzálenost). Já jsem musel přidat keyframe pro Aim na políčku 53, kde jsem ho posunul o kus nahoru, aby kamera zabírala celou žabku.
Zbývá už jen celou animaci vyrenderovat jako videosoubor. Kliknutím na ikonku tedy otevřeme Render Settings a nastavíme následující parametry:
Poté na záložce Shelf-u klikneme na ikonku pro spuštění renderingu na pozadí (Maya batch render) a nezbývá nám než počkat, až se všech 125 snímků vyrenderuje. Délka čekání je úměrná výkonu počítače, na laptopu s procesorem Intel Core2Duo 1,83 GHz to byla slabá čtvrthodinka. Výsledný .avi soubor najdete v adresáři, jehož cesta je vypsána v render Settings Window.
Finální .mb soubor si můžete stáhnout zde. Doufám, že se vám vše povedlo a jste spokojeni s výsledkem. Těším se na shledanou u dalších článků.
Tématické zařazení:
» Rubriky » 3D grafika
-
14. května 2014
Jak vkládat snímky do galerií a soutěží? Stručný obrazový průvodce
-
23. dubna 2014
Konica Minolta přenesla výhody velkých zařízení do kompaktních modelů
-
12. června 2012
-
9. dubna 2014
-
5. ledna 2017
-
6. září 2004
OKI snižuje ceny barevných laserových tiskáren C3100 a C5200n
-
13. května 2004
-
19. ledna 2004
QuarkXPress Passport 6: předvedení nové verze na konferenci Apple Forum 27.1.2004
-
6. února 2001
-
30. listopadu 2014
Nový fotoaparát α7 II: první plnoformát s pětiosou optickou stabilizací obrazu na světě
-
14. října 2024
-
22. října 2024
-
10. prosince 2024