Rendera med mental ray
Rendera med mental ray Hittills har vi enbart använt den enklaste formen av rendering i 3dsmax., den inbyggda och något föråldrade scanline-renderaren. Nu ska vi byta till mental ray som följer med programmet. Det är en mer avancerad renderare som ger fler möjligheter än scanline, men den är å andra sidan litet krångligare att jobba med. Programmet mental ray är en fristående produkt från Mental Images (http://www.mentalimages.com/) och har använts under lång tid i filmindustrin. Man kan se många exempel på stora Hollywood-produktioner som använt mental ray som renderingsmotor. Många 3D-modelleringsprogram förutom 3dsmax använder också mental ray för rendering, däribland Maya. Rent tekniskt sett är mental ray en stokastisk ray tracer, den använder alltså ray tracing för att rendera bilder. Effekter som är svåra eller omöjliga att simulera med vanlig ray tracing beräknas genom att man skickar många strålar för att beräkna varje pixel, och sprider dessa över tid och rum på ett kontrollerat men till synes slumpmässigt sätt, därav namnet stokastisk ray tracer. Mental ray-paketet innehåller förutom själva renderaren ett ganska stort antal s.k. shaders som användas för att beräkna material eller delar av material, ungefär samma sak som maps i 3dsmax. (Det är i stort sett samma sak, de har samma syfte, men något olika funktion och olika namn.) Vi kommer inte att hinna gå in på alla typer av shaders och möjligheterna med dem, men några grundläggande shaders och inställningsmöjligheter ska vi beta av, så att ni kan gå vidare på egen hand. Vi måste börja med att ställa in att vi ska använda Mental Ray som vår renderare. Detta gör man i renderingsdialogen. Titta under fliken Common, där finner du längst ner en rollout med namn Assign Renderer. Plocka fram den, klicka på knappen med de tre punkterna vid Production och välj mental ray Renderer. Du måste tyvärr ställa in detta varje gång du startar programmet om du vill använda mental ray. Grundinställningar Eftersom detta är en grundläggande övning för att komma igång med mental ray som renderare så kommer här några grundinställningar som vi kommer att använda genom hela övningen. De är fokuserade främst på att hålla hastigheten på rendering ganska hög
och undvika de riktigt långa renderingstiderna som lätt uppkommer när man jobbar med avancerade renderingseffekter. Fliken common: Single frame Upplösning: 640x360 (Detta är 16:9 format och 1/3 HDTV-upplösning) Det är en trevlig formfaktor för bilder, mindre fyrkantig och stel än 4:3. Fliken Renderer: Samples per pixel: ¼ och 4. Denna inställning berättar hur mycket renderaren räknar för att få så fin kantutjämning som möjligt. Dessa inställningar kan göra att renderingstiderna verkligen drar iväg, så dem bör man öka på väldigt försiktigt. Övning ett Vi kastar oss genast på litet övningar. Vi ska börja med en som väver in både ambient occlusion och depth of field effekter. Vi börjar med att ladda hem en scen som är gjord för ändamålet, så att vi kan koncentera oss på renderingen och i viss mån material, inte modellera en massa. Den scenen ser inte så värst mycket ut för världen just nu: ytorna är trista och ljussättningen ser platt och tråkig ut. http://staffwww.itn.liu.se/~peter/mentalray/dof_occlusion_start.max När vi är klara så kommer den dock att se ut som nedan. Färgerna kan såklart ändras om man vill ha något finare.
Börja med att ställa in mental ray som renderare för scenen, den har den vanliga scanlinerenderaren inställd när du öppnar filen. Välj objektet som heter Skybox och öppna sedan materialeditorn. Denna box ska vara lite ljusgrå och sen enbart ha en textur i diffuse-kanalen som heter Ambient/Reflective Occlusion (base). Ambient occlusion fungerar så att den utgår från aktuell punkt i den yta som skall renderas och tittar i en halvsfär centrerad i normalens riktning om det finns några objekt i närheten som kan tänkas skugga den. Hur långt bort man tittar efter skuggande objekt bestäms av inställningen Max distance, som anges i samma måttenheter som man använt i scenen. Detta visar på hur noga man bör vara med att modellera i rätt skala, och också hålla reda på vilken skala man använder, så man slipper prova sig fram så mycket. Samples bestämmer hur många strålar som skickas ut per pixel, bright är vilken färg den har när den är helt oskuggad och dark är färgen den har när den är helt skuggad. Övriga inställningar bryr vi oss inte om. Vill du läsa mer om ambient occlusion i 3dsmax så läs denna websida: http://www.christopherthomas.net/pages/free_tutorials/tut_ambient_occlusion_shader/ct_tut_mentalray_ambient occlusion_shader.htm
Tilldela nu detta material till Skybox. Om du renderar nu så borde det bli något i stil med bilden nedan. Om du tittar noga så ser du det är mörkare under den lutade boxen och i kanterna på samtliga boxar. Det ser ut som om de är belysta av en stor, diffus ljuskälla ovanifrån, som om det vore en utomhusscen under en mulen himmel, eller en inomhusscen utan några direkta ljuskällor, bara indirekt ljus från tak och väggar. Detta ser redan ganska bra ut, mycket mer trovärdigt än den hårda, riktade ljuskällan nyss. Nu ska vi bara lägga på lite bättre material på objekten i scenen. För att använda texturer ihop med ambient occlusion så får occlusion-mappen agera mask för texturen, så att den använder basfärgen av objektet när det är mörkt. Basmapträdet ser ut som nedan. Tänk på att när du maskar bort en textur så är det objektets grundfärg som kommer fram. Så den bör vara svart eller mörk i den färg som objektet är i stort. Om du till exempel sätter den till väldigt röd så kommer du att se en orealistisk (men rolig) effekt. Du kan också ställa upp färgen på occlusioninställningen Dark till mörkgrå istället för svart så kommer aldrig mappen att maskas bort helt. Man får inte glömma att detta inte är en fysikaliskt korrekt rendering trots att vi använder en global belysningsmodell, det är snarare renderingsfusk på en hög nivå, så man får ofta fixa och trixa en del för att det ska se helt naturligt ut. Men detta är lätt värt besväret när
man får renderingar som är 10-50ggr snabbare än om man skulle använda fysiskt korrekta metoder. Mental ray kan beräkna hyfsat fysikaliskt korrekta bilder, men det tar väldigt lång tid. Fusk lönar sig fortfarande inom datorgrafik, bara man vet vad man håller på med. Skapa nu lite material med olika egenskaper för de olika objekten, så att scenen blir lite roligare. Prova med olika inställningar för spread och max distance och se skillnaden. När du är klar med detta så kan du raskt gå över till nästa uppgift där vi använder samma scen. Depth of field Depth of field används för att simulera oskärpa beroende på avståndet, som man alltid får med en riktig kamera. I 3D-grafik så är det alltid lättast att beräkna bilder med perfekt skärpa och oändligt skärpedjup, men för att ge realistiska bilder vill man ofta efterlikna en verklig kamera. Detta är inte speciellt svårt, men det är några ställen man behöver ställa in. Först måste man ställa in så att kameran har Depth of field påslaget. Det gör man för kameran i modifier-panelen under rubriken multi-pass effects. Där bockar du för enable och väljer sedan Depth of field (mental ray) i listan. Nu har vi sagt till 3dsmax att denna kamera ska göra en sådan beräkning. Men sen måste vi även slå på det i renderingen och berätta hur mycket av effekten vi ska ha. Det gör du i Renderer-fliken och under rubriken Camera Effects. Bocka för Enable under Depth of Field (Perspective Views only). Man kan välja att ställa in f-stop som är siffror som kommer från kameravärlden och känns igen av fotografer, eller bara ha focus limits. Båda inställningarna påverkar samma sak, så man väljer det som man känner sig mest hemma med. Vi ska använda fstop. Börja med att välja kameran och titta hur långt det är från kameran till targetpunkten. Det finns ett värde för det i modifier-rollouten. Sätt sedan samma värde som Focus Plane så är fokuspunkten där kamera-target är. Objekt på det avståndet kommer att renderas med full skärpa. Dessa två värden är inte länkade, så flyttar du din target och vill ha fokus på en ny punkt så måste du även ändra det värdet i renderingsdialogen. För f-stop så betyder låga värden kort skärpedjup och höga värden långt skärpedjup. Prova att ställa den på 0,001 och se hur otroligt kort det blir. Ställ in det så du tycker det ser fint och bra ut. Rimliga värden är från 0,05 till 1 eller strax däröver. Det är en smaksak, prova några olika värden med fokus på lite olika punkter i bilden tills du känner dig hemma med hur det fungerar.
Glas En typ av material som återkommer ofta i rendering är glas. Det är ett vanligt material i verkligheten, det är fint att titta på, det tar lång tid att rendera och man känner sig nöjd när det är klart. Det är alltså ett utmärkt ämne för en övning. Det kan vara litet trixigt att skapa modeller som ser bra ut med ett glasmaterial. Börja därför med att ladda hem denna färdiga modell: http://staffwww.itn.liu.se/~peter/mentalray/glas_start.max Det är den som vi utgår ifrån. Den har redan mental ray inställd som renderare och 640x360 som upplösning. Vi ska använda ett mental ray material som vi bygger upp från grunden med Dielectric Material (3dsmax) som vi lägger i surface-slotten för mental ray-materialet vi precis skapat. ( Dielectric är det fysikaliska namnet på material som inte leder ström, exempelvis glas och plast, faktiskt i princip allt utom metaller.) Dielectric-materialet har inte så värst mycket inställningar. Det är helt enkelt en någorlunda fysikaliskt korrekt representation av material som är blanka och genomskinliga. Det enda vi behöver ställa in är Index of Refraction (brytningsindex på svenska) som ska vara 1,55 eller däromkring för glas. Nästa värde är Phong Coefficient som bestämmer hur stor och hur mycket highlight objektet har. Den börjar inte synas förrän värdet passerar 10 ungefär. Ställ upp det tills du tycker det ser bra ut. Provrendera nu och se om du har en fin start på ett glas. Som du ser så är foten ganska mörk, det har att göra med det inte kommer så mycket ljus på den delen av objektet. Framför allt inte på golvet under, det ska vi avhjälpa med att dels lägga in lite lampor i scenen och att slå på caustics. Caustics beräknar hur ljus fokuseras på ytan av glasets brytning. Det är en effekt som inte går att simulera med klassisk raytracing, men mental ray kan göra så kallad forward ray tracing eller photon mapping som simulerar sådana effekter på ett bra sätt till en rimlig kostnad.
Lägg in en mr area spot i scenen så den lyser på glaset. Var noga med att klicka i Overshoot och att den har skuggor påsslagna och av typen ray trace. Om du renderar nu kommer du se en svart skugga, och foten är ännu svartare. Detta är ett fenomen som är svårt att komma ifrån på ett sätt som ser bra ut, såvida man inte har en renderare som tillåter caustics. Det har vi, och därför ska vi använda det! Det du måste lägga till i ditt material är att du drar din Dielectric map från Surface till Photon och väljer Copy. Nu har du lagt till en photon-shader på ditt material som beräknar ljusets transport genom objektet och kommer ihåg var det landar. Nu är materialet och lampan klara för din caustics-rendering. Det är bara renderingsinställningarna kvar, och dessa hittar du under indirect lightning. Högst upp i den rollouten hittar du Caustics. Klicka på enable som vanligt. En liten bit längre ner kan du även bocka för All Objects Generate & Receive GI and Caustics. Nu kan du rendera, detta tar förmodligen litet längre tid än förut. Din bild borde se ut ungefär som nedan. Detta förfarande fungerar bara för vitt glas. Det går förhållandevis snabbt och blir mycket snyggt. Vill du göra färgat glas med caustics så måste du använda ett annat material som är betydligt långsammare att rendera. Det ska vi göra nu. (Vi är inte rädda för litet besvär, eller hur?) Välj en ny materialboll i materialeditorn, välj get material, välj Architectural och välj sedan Glass Clear i listan under Templates. Detta material går självklart att använda för ofärgat glas också, men du kommer att se hur mycket långsammare detta är än det enklare men snabbare dielectric material. Detta färdiga glasmaterial är väldigt enkelt att använda och inställningarna är mer eller mindre självförklarande. Det enda du egentligen behöver ställa in är vilken färg du vill ha. Jag valde en ljusblå, och min rendering blev som nedan.
Detta var bara en snabb och hyfsat enkel genomgång av hur detta material fungerar, och självklart finns det mer att experimentera med för att öka realismen. Man kan vilja lägga in en ganska storskalig Noise som bump-map för att simulera ojämnheter i glaset, och några självlysande vita plan utanför kamerans vy kan ge lite finare reflexioner i glaset. Även i renderingsdialogen finns en del inställningar som kan öka på realismen lite grann. Jag har medvetet hållit antalet fotoner ( photons ) och samplingsgraden på en ganska låg nivå för att inte renderingstiden skall dra iväg bortom all rimlighe, men du får gärna prova själv att ändra på Max Num. Photons per Sample och även antalet fotoner som skjuts iväg, den inställningen finns en bit längre ner under rubriken Light Properties. Energy bestämmer hur starkt ljuset är och Caustic photons bestämmer hur många fotoner som beräknas. Dessa inställningar finns också som multipliers på varje lampa du sätter ut i scenen. Om du vill att en lampa ska ha mycket mer energi än de andra så ökar du multipliern helt enkelt. Vill du ha detaljerad information om ett material och dess inställningar, sök på namnet eller rubriken i den inbyggda hjälpen i programmet. Prova även att byta färgen på bakgrunden och se hur glaset förändras i sitt utseende beroende på bakgrund. Om bakgrunden är helt svart så blir det nästan bara highlights kvar. Glas som ser bra ut, speciellt mot en mörk eller på annat sätt ointressant bakgrund, är generellt sett en mycket svår rendering som kräver mycket både av renderaren och av personen som kör den. Mental ray är inget magiskt verktyg, det kräver en hel del teknisk kompetens och en del experimenterande för att ge bra bilder utan att renderingstiderna sticker iväg, men rätt använt kan det ge mycket naturtrogna bilder. Det är som sagt en renderare som används för många kommersiella projekt, inklusive högbudgetproduktioner, så behandla det med tillbörlig respekt, och läs och experimentera på egen hand. Det är ett mycket bra och användbart verktyg, men som sagt, det kräver också en del av användaren!