Készítsen sztereó kép - tanulságok 3ds max
Szinte minden látható a sztereó képet, például, emlékszem az iskolában volt notebook a borítón, ami érthetetlen firkákat nyomtatták. De ha megnézzük őket a „helyes” - ezek a firkák szert kötetet. Nem minden fog látni őket egyszerre, akinek nem volt nehéz, de aki nem volt képes. Számos ajánlást, hogyan lehet elérni azt az illúziót térfogat: lásd „a” a képet, vagy hogy közel az orrát, és lassan szívja.
Hogy az emberek érzékelik a hangerőt? Minél közelebb van a kérdéses tárgy, annál több a megfigyelő csökkenti szemében. így ha a szóban forgó objektum található végtelen távolságra, a szemek ránézni „párhuzamos”.
Most, hogy hogyan lehet elérni az illúziót kötet egy sík kép. Tehát, van egy ember két szeme (1. ábra): A bal és jobb szem O1 O2, valamint a sík vetülete sztereó képek D1 D2. Hagyja, hogy a szóban forgó objektum a B található egy h távolság a megfigyelő. Aztán, hogy „látni” vele a képen meg kell egyeznie a szám az a B1 és B2 pont. Kiderült, mi tartja a terítéket, és úgy néz ki, ha „a” azt. A bal szem a lényeg B1. Jobb B2. A fényképek őket egy lapon az azonos és a látszatot keltik, hogy valóban látni a tárgyat B. mögött található a lemez síkjából. így Minél nagyobb a távolság a pontok közötti B1 és B2, amelyben ugyanazt a képet, a „távolabbi” észlelt tárgy B.
Most ebből egy pár számítási képleteket, amelyek hasznosak lesznek téve a sztereó képet. Tegyük fel, hogy egy - közötti távolság a szemek, H - a maximális távolságot egy távoli objektum, h - a tárgy távolságától h_max - maximális távolság a távoli objektum, hogy a projekciós síkon a sztereó képet. A hasonlóság a háromszögek BB1 B2 és BO1 O2 kell B1 B2 / BE = O1 O2 / BF. B1 B2 = d. O1 O2 = a. BF = H. BE = BF-EF. EF = AF-AE = H-h_max. BE = H- (H-h_max). Összesen d / (H-H + h_max)) = a / h.
Talán az elmélet elég hosszú, akkor mehet a gyakorlatban. Szükséged lesz Photoshop és 3DSMax. A Photoshop létrehozni egy textúra, ahonnan a későbbiekben fog épülni sztereo képet. Néhány javaslat: A további részleteket a textúra, annál jobb, hogy a végső változat (egyszólamú nem kap semmit); Az anyag magasságát meg kell egyeznie a kép magassága (ezért szükséges azonnal meghatározza a végső méretét a sztereó kép); és a szélessége attól függ, hol fog használni a mellékelt képet. 1. ábra d_max érték pontosan megegyezik a szélessége a textúra, így a valóságban (a képernyőn, vagy a nyomtatás után) ez nem haladhatja meg a távolságot a szeme egy. B az eredeti textúra, a jobb minőségű végeredmény az, hogy az egy időben, annál több képpont szélességű. Van ez a textúra:
Szélessége 100 képpont, magassága 600 (elülső végén, hogy megkapja a sztereó mérete 800 x 600 pixel kép). Annak ellenére, hogy jobb, hogy úgy, hogy ő cserép vízszintesen. Ezután hozzon létre vagy nyissa ki a 3D-objektum MAX'e. Én használtam ezt a modellt a darazsak:
Az eredmény nem lesz hasznos anyagokat vagy harmadik fél megjelenítőt fényforrások. Tehát, ha mindez rendelkezésre áll a helyszínen, akkor kiosztja az összes szabványos anyag, távolítsa el az összes fényforrás és a Default scanline leképező. Most elkezdheti a forgatókönyvet. Ehhez válassza ki a menüt MAX'a MAXScript -> New Script és script szerkesztése ablak. A script lesz saját felület. Ezt meg lehet tenni két módja van: a Utilites panel vagy egy külön ablakban. Mi az első lehetőséget választja, és hozzon létre egy új szkriptet segédprogramot:
közüzemi stereoImg "Stereo Image"
-- létrehozása sztereó képek segédprogram
Tehát a lista szükséges elemeket: két csoportban a Texture és megjelenítés. A Texture csoport egy címke, amely megjeleníti információkat a textúra, és egy gombot, amely elindítja a fájlmegnyitási párbeszédablak textúra. A Render csoport - fonó (megjelenítő határozza meg a szélessége), a címke (információ a magassága a rendering), fonó (minőségi sztereó kép), folyamatjelző sáv, tárgy kiválasztása gomb és a „legfontosabb” gombot futtatását egy tévedés. Erre a célra, a test a közüzemi kell hozzá a következő sorokat:
fn fltr_cam obj = superClassOf obj == kamera - true, ha az obj kamera nevét (szűrő)
címke l_T_img „nem textúra” - információnagyság
gomb b_T_img „Load mintázatok” - loading textúra
címke l_R_h "height: 0" - magassága
spinner s_R_prec "minőségi sztereó kép" tartomány: [1, 10, 4] típusa: #integer szélesség: 80 align: #right - minőségi sztereó képet
Folyamatsáv prb_R_status érték: 0 - haladást tehetik
pickbutton pb_R_cam "Pick kamera" szűrő: fltr_cam fölött: 2 - Kamera kiválasztása
gomb b_R_stereo "
Az elején, a segédprogram a test (ismertetése előtt az egyéni elemek) határozzák meg a lokális változók létrehozásához szükséges sztereó kép:
-- meghatározását a lokális változók
helyi szélesség, magasság, d_max - szélessége és magassága a megjelenítést, a szélessége a textúra
Továbbra is regisztrálni eseménykezelőkkel az elemek a felhasználói felület. Leírások minden esemény a következők: a<имя элемента> <название события> <список аргументов>do (<обработка события>). Kezdetként viselkedésének leírására MAX'a sürgető terhelés textúra gombra. Mi történjen: nyissa meg a fájlt kiválasztása párbeszédpanelen, majd kiválasztja a textúra fájl betöltődik a MAX formájában jelenik információt a mérete és textúrája a nevét, majd kezdeményezte a helyi változókat és általános beállításokat a begyűjtésre.
T_file_name = getopenfilename típusok: "bitmap (* .bmp). | * .bmp" - fájlmegnyitási párbeszédablak
b_T_img.caption = filenameFromPath T_file_name - gombot a fájl nevét a kép
d_max = T_img.width - frissíti az összes lokális változók
szélesség = 4 * magasság / 3, mint egész szám - meghatározása, hogy azok az szélességének végül fordult egy 3: 4
s_R_w.value = szélesség - kijelző tájékoztatás a rendering felbontás
renderWidth = szélesség - a megjelenítő általános beállításokat (szélesség, magasság)
Mi határozza meg a forma, azt akarjuk, hogy a sztereó képet. Ehhez szükségünk van a kamera. Ha a jelenet már kamerák a „megfelelő” nézet - kiváló, tudod használni őket. Ha nem, akkor létre kell hozni a kamerát. A legegyszerűbb módja annak, hogy megy a Perspektíva, ahol kiválaszthatja a kívánt szöget. Ezután hozzon létre egy kamera egy fajtája: a létrehozása Főmenü -> Fényképezőgépek -> CreateCameraFromView vagy a Ctrl + C Emlékezzünk elmélet, vannak olyan paraméterek, mint a H - a maximális távolságot a távoli objektum és h_max - a távolság a projekciós síkon, hogy maximalizálja a távoli objektum. Tehát, hogy ne adja meg kézzel, akkor vegye ki őket a kamera tulajdonságait, nevezetesen Levágott Planes. Válassza ki a kívánt kamerát a Modify panel felfedi scroll paraméterek. beikszeljük mellett clip manuális. Továbbra is csak a beállítani a Közel-és Távol Clip Clip. Közel Clip sík az vetülete a sztereó kép síkja és a Távol Clip - a távolság a legtávolabbi objektum. Ajánlások: tárgyak, amelyek építik a sztereó hangzás között kell elhelyezni a Távol Clip és a Közel-Clip. Közel Clip körülbelül a fele a Távol-Clip. létesítményeket kell távol a Közel-Clip, közel a Far Clip. Bár ez lehet figyelmen kívül hagyni, és további kísérlet Levágott Planes. hogy a kívánt eredményt. így fajta létre, balról „magyarázza” a forgatókönyvet, hogy mi fog működni ez a kamera, ez fogja írni a felvezető megnyomásával a kamera kiválasztó gomb:
pb_R_cam.caption = pb_R_cam.object.name - gombot a kamera nevét
-- feldolgozó változások teszik szélessége
Továbbra is kezelni az utolsó esemény - megnyomja a „legfontosabb” gombra. Ismét elmélet take alapján előzőleg kapott képlet: d / (H-H + h_max)) = a / h. Itt a. H és h_max - Constant. Az utolsó két poluchayutsya Hajvágás Planes a kamera. Mi határozza meg a. ez a helyettesítő érték helyett H. H - szélsőséges esetben, amikor egy tárgy található egy maximális távolság. Ennélfogva, a = d_max * H / h_max. A végső képlet a következő: d = a * (H-H + h_max) / h - ez úgy számítjuk ki, a pontok közötti távolság d. képek, amelyek az azonos, annak érdekében, hogy a látszatot keltik, hogy az objektum található, a parttól h a megfigyelő.
-- tévedés a sztereó kép
DOF_img = render kamera: pb_R_cam.object outputwidth: szélesség outputheight: magasság csatornák: # (#zDepth)
-- létrehozása logók a jövőben a sztereó kép
-- kitöltése az első textúra sáv
megjelenítéséhez OUT_img - nyissa ki az ablakot a végső sztereó kép
Ezután a csatorna mélysége van vonali végigpásztáztuk (ellenőrzésére, hogy a távolság nem haladja meg a Far Clip kamera). Alapján ez az érték h (script dist) képlettel és korábban kapott között számított távolságot ismétlődő pixel. Így megy az építőiparban a sztereó kép, az elért az út mentén számítástechnikai frissül. A végén, a képernyőn megjelenik a végső eredmény (7. ábra).
Az alábbiakban egy teljes lista a szkript-alapú segédprogram némi javulás:
közüzemi stereoImg "Stereo Image"
-- létrehozása sztereó képek segédprogram
-- meghatározását a lokális változók
helyi szélesség, magasság, d_max - szélessége és magassága a megjelenítést, a szélessége a textúra
fn fltr_cam obj = superClassOf obj == kamera - true, ha az obj kamera nevét (szűrő)
címke l_T_img „nem textúra” - információnagyság
gomb b_T_img „Load mintázatok” - loading textúra
címke l_R_h "height: 0" - magassága
spinner s_R_prec "minőségi sztereó kép" tartomány: [1, 10, 4] típusa: #integer szélesség: 80 align: #right - minőségi sztereó képet
Folyamatsáv prb_R_status érték: 0 - haladást tehetik
pickbutton pb_R_cam "Pick kamera" szűrő: fltr_cam fölött: 2 - Kamera kiválasztása
gomb b_R_stereo "
T_file_name = getopenfilename típusok: "bitmap (* .bmp). | * .bmp" - fájlmegnyitási párbeszédablak
b_T_img.caption = filenameFromPath T_file_name - gombot a fájl nevét a kép
d_max = T_img.width - frissíti az összes lokális változók
szélesség = 4 * magasság / 3, mint egész szám - meghatározása, hogy azok az szélességének végül fordult egy 3: 4
s_R_w.value = szélesség - kijelző tájékoztatás a rendering felbontás
renderWidth = szélesség - a megjelenítő általános beállításokat (szélesség, magasság)
prb_R_status.value = (100 * x / d_max), mint egész szám - frissíti a haladás, a jelenlegi művelet
-- teszi a „kiterjesztett” sztereó képet
H = pb_R_cam.object.farclip - a távolság a szemét, hogy a maximális mélység
h_max = pb_R_cam.object.farclip - pb_R_cam.object.nearclip - a távolság a projekciós síkon, hogy max. mélység
-- soronként építőiparban a sztereó kép ( „kiterjesztett”)
-- hogy a renderelés mélység távol a kamera a legközelebbi pont (itt is van egy lineáris simítás)
-- átvételét „kiterjesztett”, „normális” sztereó képet
FIN_img = bitmap (szélesség + d_max) magasság, szín: fekete - létrehozása logók a végső sztereó kép
megjelenítéséhez FIN_img - nyissa ki az ablakot a végső sztereó kép
A változás csak a számítási algoritmus a sztereó képet. Add a check „üzembiztos”: tévedés nem indul el, ha nem választotta ki a textúra és a kamera. Tehát van egy algoritmus, „javított” kiszámítása sztereo kép valósult használatával a tárcsa „minőség”. Dióhéjban, mi az: a kép első lineárisan nyújtva, és tévedés is van „feszített”, majd az eredményt tömörítést az eredeti méretére. A különbség látható a 7. ábrán, a 8. ábra, 9. ábra.
Fig.7 minőségű számlázott egység, és a 8. ábra és a 9. ábra - a 4. és a 8., illetőleg. Természetesen minél jobb a minőség, annál nagyobb a renderelés ideje.
Ez minden. Most már van egy script eszköz, amelyet fel lehet használni bármilyen 3D-objektum szerezni sztereó képet. Nagyon remélem, hogy a lecke egyértelmű volt (van, hogy barátok a geometria :) és hasznos (legalábbis az a tény, hogy ténylegesen nézni a „volumen” modell).