Monday, December 21, 2015

Star Wars Force Awakens... ความสนุก ที่ตื้นเขิน

Spoil แน่นอนบอกไว้ก่อน


ความสนุก 8-9/10


คงไม่ต้องบอกอะไรมากกับข้อดี เพราะมีคนชมเยอะแยะไปหมดอยู่แล้ว ผมเองก็เห็นด้วยครับหนังสนุก ดูเพลิน เอนเตอร์เทนดี


เนื้อเรื่อง 5/10 


ในแง่เนื้อเรื่องมีข้อขัดใจหลายข้อ ซึ่งหนังเรื่องนี้ผมว่าตอกย้ำจุดเด่นจุดด้อยของ JJ ได้ชัดเจนมาก คือเก่งฉากแอคชัน แต่ไม่เก่งเรื่องการผูกความรู้สึก หรือสร้างสายสัมพันธุ์ของตัวละครเลย มุขตลก 7/10 ผมชอบ ทำให้ยิ้มให้ขำได้อย่างเป็นธรรมชาติ แต่ก็มีบางส่วนจริงๆ ที่ใส่เข้าไปแบบขอให้ได้เล่นมุขเถอะจนย้อนแย้งในตัวเองให้เกิดข้อสงสัยซะงั้น...


แม้ตัวหนังจะโปรโมท Practical Effect (คือเอฟเฟกหน้ากล้อง prop จริงอะไรจริง ที่ไม่ได้พึ่งแต่ CG) แต่ผมไม่คิดว่า JJ มีหัวด้านนี้นัก เขามองข้ามรายละเอียดยิบย่อยที่พบได้ในชีวิตจริงค่อนข้างเยอะ จนกลายเป็นว่าหลายๆ อย่างรู้สึกเฟคอย่างน่าเสียดาย ยกตัวอย่างพวกยานพาหนะ เช่นในภาพข้างบน เวลาลอย มันลอยเฉย... เฉยสนิทจริงๆ นะครับ ไม่มีเด้งขึ้นลงตามน้ำหนักคนขี่ หรือไหวตามแรงลมอะไรเลย ลองย้อนกลับไปดูภาคเก่าๆ Lucas ไม่พลาดในส่วนนี้


ตัวละครชูโรงตัวแรก เรย์ ซึ่งติดแหงกอยู่บนดาวแจ็คคูคอยหาของเก่าประทังชีวิต การที่เธอเก่งเรื่องการปีนป่ายและอุปกรณ์อิเล็กซ์ทรอนิกส์ อาจจะพออ้างได้ว่าเธออยู่กับซากยาน Star Destroyer มาตลอดชีวิต แต่การที่สามารถใช้ Force ได้อย่างปุบปับ แถมเอาชนะ Sith ที่ผ่านการฝึกฝนมาแล้วนี่มัน... เกินไปมากๆ และไร้ที่มาที่ไปที่สุด หากจำได้ กว่าลู้คจะเริ่มเมพ ที่ปาเข้าไปภาค 6 แล้วนะ เมื่อเทียบความเร็วของพัฒนาการนี่ เรย์ ทำเอา ลู้ค เป็นดาวซินโดรมไปเลยทีเดียว

ตอนเธอใช้ Mind Trick นี่ พวกเราแฟนๆ ทำแบบนั้นเลียนแบบสิ่งที่เคยเห็นเนี่ยมันไม่น่าแปลกหรอก แต่ เรย์ อยู่ๆ ไปเอาไอเดียแบบนั้นมาจากไหน...

การที่เธออยากกลับดาวแจ็คคูเหลือเกินนี่ก็ไม่ค่อยเมคเซ้นส์เท่าไหร่ ถ้าดูจากการประทังชีวิต จะเห็นว่าเธอไม่ได้มีความสุขที่จะต้องทนทุกข์ยากอยู่บนดาวนั้นเสียหน่อย แต่เพราะหวังว่าจะมีคนมารับแค่นั้นเองหรือ เหตุผลมันไม่มีน้ำหนักเพียงพอเลย


ฟินน์ ผมชอบครับ ชอบมากที่สุดในเรื่อง แต่... ตอนท้าย พอ ฮาน ถามว่าทำอะไร กลับตอบ ภารโรง ซะงั้น ทั้งที่ตอนต้นเรื่องก็ลงไปร่วมรบกับเขาด้วยอะนะ? คือดูยังไงๆ ก็เป็นทหารที่ผ่านการฝึกรบมา ยิงปืนในยานบินก็ฝีมือใช่ย่อย แถมใช้อาวุธประชิดตัวก็คล่องแคล่วถึงขนาดต้าน Sith ได้พักนึง แล้วไอ้มุขภารโรงนี่คือขอให้ได้ตลกเหอะ งั้นเหรอ?


โพ ดาเมร่อน... ไม่รู้จะพูดยังไงกับไอ้ตัวนี้ดี คือยัดเยียดให้ไอ้ pay-to-win รายนี้เก่งเวอร์มาก โดยเฉพาะตอนรบกันเหนือคาเฟ่อะไรสักอย่าง ซึ่งหนังใช้เวลานาทีเต็มๆ โชว์โพ สอย free player ร่วงลำแล้วลำเล่า... พอตอนท้ายเรื่องมีตานี่โผล่มานำทีมกองบินปุ๊บ เราก็ไม่ต้องลุ้นแล้วสิครับแหม่ รู้อยู่แล้วมันรอดแน่ และภารกิจต้องสำเร็จแหงมๆ

จริงๆ นะถ้าตายไปตั้งแต่ตอน Tie Fighter ตก เรื่องนี้คงลุ้นขึ้นอีกเป็นกอง


แมส เป็น Full CG ซึ่งไม่ได้เนียนเล้ย ทั้งที่มนุษย์ต่างดาวส่วนใหญ่ในคาเฟ่ เป็น Practical Effect ที่น่าสนใจกว่ากันหลายขุม แต่กล้องกลับส่ายไปส่ายมา ให้เห็นของดีแค่แว้บๆ นั่นนิด นี่หน่อย แต่โชว์แมสเยอะๆ ที่แสนจะไม่เนียน เฮ้อ

ความเห็นส่วนตัว ดาบของลู้ค ที่ร่วงลงไปตอนเขาโดนตัดแขนที่ Cloud City ได้คืนมาได้ยังไงผมว่าเป็นประเด็นน่าสนใจมาก แต่เจ๊แกตัดบท MIND YOUR OWN FUCKING BUSINESS ... คือ โอเค สรุปว่าคนแต่งก็ไม่รู้เหมือนกัน


ฮาน โซโล ตัวโปรดของใครหลายๆ คนรวมถึงผมด้วยในภาคก่อนๆ แต่มาภาคนี้ ผมรู้สึกว่าคาแรกเตอร์แก ไม่ใช่ฮาน โซโล เท่าไหร่... แต่เป็นตลกโปกฮา เกรียน กวนตีน แบบ อินเดียน่า โจนส์ มากกว่า

ผมขอพูดถึงชิวเบคก้าดีกว่า ชิววี่ ผู้เป็นคู่หูกับฮานมานานแสนนาน... กลับแทบไม่มีทีท่าเสียใจต่อการจากไปของฮานเลย นอกจากตะโกนอาละวาดนิดหน่อย พอกลับไปถึงฐาน ชิววี่เดินสวนกับเลอาไปหน้าตาเฉย ผงกหัวนิดหน่อย... คือ จริงดิ? ถ้าจะมีใครเสียใจต่อการจากไปของฮานที่สุด ก็ต้องชิวเบคก้านี่แหละครับ แต่เลอา กลับเดินผ่านชิววี่ ไปกอดเรย์ซะงั้น... 

โอเค คือในเรื่องก็พยายามปูให้เรย์มองฮานเหมือนพ่อบังเกิดเกล้า แต่อย่างที่บอก JJ ไม่อาจสร้างความสัมพันธุ์นั้นขึ้นมาในความรู้สึกของผมได้เลย คือมันยัดเยียดมากๆ ไม่อิน ไม่มีอารมณ์ร่วมเลยแม้แต่น้อย

เลอา เอง ก็ไม่ได้มีบารมีหรือมาดสมเป็นผู้บังคับบัญชาเลย เจ๊แกเหมือนคุณแม่แก่ๆ คนนึงที่มาเดินเล่นมากกว่า...

ทีนี้ เรื่องของศึกกลางเวหา




ลองดูในคลิปข้างบนนะครับ ว่าฝ่ายกบฏมียานรบหลายหลายแค่ไหน ซึ่งเหมาะสมกับภารกิจต่างๆ กัน นักบินแต่ละกองบินก็มีหน้าที่แตกต่างกันด้วย X-Wing มักปกป้องยานทิ้งระเบิด ยานทิ้งระเบิดพุ่งเป้าไปที่ยานใหญ่หรือฐานทัพ A-Wing ความเร็วสูงรับมือยานเล็กฝ่ายตรงข้าม etc จุดประสงค์ของยานแต่ละชนิดเมื่อผสมผสานกันทำให้ฉากยิงกันมีความน่าสนใจและลึกล้ำ

ทีนี้ ใน Force Awakens คือถามจริงใครเป็นคนคิด ให้มีแต่ X-Wing ล้วนๆ??? ความรู้สึกคือเหมือนทุกคนบินไปเพื่อตั้งหน้าตั้งตาบอมฐานกันถ้วนหน้า ไม่มีใครมีหน้าที่ระวังหลัง เก็บตก หรืออะไรทั้งนั้น แถมถ้ากะบอมฐานจริง เอา Y-Wing ไปหน่อยไม่ดีหรือ...




ข้อสุดท้ายที่ขัดใจที่สุด คงเป็นเรื่องของความหนักหนาที่ลู้ค และฮาน แบกรับไว้บนบ่า... ซึ่งมันไม่ได้ดูหนักหนาพอจะทำให้ทั้งสองคนพากันหนีความจริง ทิ้งให้เลอารับหน้าที่บัญชาฝ่ายกบฏอยู่คนเดียวเลยครับ คือ ไคโล เป็นลูกฮาน แล้วไง? แค่นั้นถึงกับต้องหนีความจริงกลับไปขนของเถื่อนเลยเหรอ ลู้คเองก็เรียกว่าแทบจะเป็นคนเดียวที่ต่อกรกับ Dark Force ได้แต่กลับหนีไปซะงั้น

เอาจริงๆ นะครับ 2 คนนี้ ผ่านโลกมามากกว่านั้นครับ เขาเจอเรื่องร้ายๆ และมรสุมชีวิตมาตั้งขนาดนั้น เหตุผลแค่นี้มันไม่ใช่ ไม่ใช่เลย ทำให้รู้สึก 2 คนนี้เห็นแก่ตัวมากๆ ถ้าจะมีเหตุให้ 2 คนนี้หนีไปจริงๆ มันต้องหนักหนากว่านั้นมากครับ

ผมลองคิดเล่นๆ นะ สมมุติ ลูกของฮาน ไปสู่ด้านมืดจริง.. แล้วลู้ค เป็นคนฆ่าลูกฮานกับมือ!! คือปล่อยข่าวแบบนั้นแต่จริงๆ แล้วไม่ได้ฆ่า แบบนี้สิครับลู้คมองหน้าเลอาไม่ติดแน่ๆ และความตึงเครียดระหว่างลู้คกับฮาน... ไม่อยากนึกเลย แถมพอไคโรเผยตัวทีหลังว่าเป็นลูกฮานนี่คงมันส์น่าดู

จริงๆ ยังมีอีกเยอะแต่พอดีกว่าชักจะยาว

Saturday, December 12, 2015

Pixar "Denoise" test

เพิ่งเริ่มหัด Speedtree ครับ พอลองใส่ลมพัดดูแล้ว ก็เกิดสงสัยขึ้นมา ว่า Denoise ที่มากับ Renderman มันจะช่วยแก้กระพริบเวลาเรนเดอร์งานละเอียดๆ อย่างนี้ได้แค่ไหน

ผลที่ได้ผมว่าน่าประทับใจมากครับ ทั้งที่เซตเรนเดอร์แบบหยาบมากๆ
- 72 max samples
- 0.005 threshold
(ค่าที่ Pixar แนะนำสำหรับ production คือ 256 max samples และ 0.001 threshold)





ขั้นตอนสร้างต้นไม้
1. สร้างใบ ใน Speedtree แล้วแคปภาพมุมต่างๆ ออกมาเป็น texture
2. เอา texture ไปลองสร้าง low poly ใน Maya ดู
3. ส่งโมเดลจาก #2 กลับเข้า Speedtree เพื่อเอาไปแปะบนต้นไม้
4. export Alembic พร้อมแอนิเมชันลมพัด ส่งกลับเข้า Maya


รัน Pixar Denoise แบบ stand alone

Denoiser เป็นฟังค์ชั่นที่เพิ่มมาใหม่ใน Renderman ver 20.x ซึ่งจากภาพตัวอย่างในเวบ Pixar แล้ว น่าใช้เป็นที่สุด

ภาพจาก http://renderman.pixar.com/view/denoiser

ปกติ เราสามารถสั่งเปิด Denoise ได้จาก Render Globals ใน Maya ซึ่งมี 2 โหมดหลักๆ คือ single frame ซึ่งแก้ noise ในภาพเดียว และ cross frame ซึ่งจะดูเฟรมหน้าและหลัง ด้วย


แต่ว่าการสั่ง denoise ใน render globals เลยนั้นผมว่าไม่สะดวกนัก เพราะคำสั่งนี้จะไม่ทำงานเลย จนกว่าการเรนเดอร์จะสิ้นสุดถึงเฟรมสุดท้าย ซึ่งถ้าเรา cancel batch render กลางคัน คำสั่งก็จะไม่รันเลย

ดังนั้นวิธีที่ดีกว่า คือการสั่งจาก command line ซึ่งเราจะพบตัว denoise.exe ได้ ใน folder ของ Pixar

  

ซึ่งวิธีการใส่คำสั่ง ผมแนะนำให้ทำเป็น bat ไฟล์ ซึ่งทำเพียงไฟล์เดียวแล้วก็อปวางใน folder ที่ต้องการใช้งานได้ สะดวกมาก

 PATH "C:\Program Files\Pixar\RenderManProServer-20.5\bin"; %PATH%;  
 dir /b *.exr > files.txt  
 denoise.exe -b --crossframe -v variance files.txt  

PATH = เพื่อให้ bat file รู้ตำแหน่งของ denoise.exe
dir = เพื่อเซฟรายชื่อไฟล์ exr ใน folder นั้นๆ ลง files.txt
และบรรทัดสุดท้ายคือรัน denoise โดยใช้ variance เพื่อใช้รายชื่อไฟล์ที่เซฟเอาไว้

หลังจากนั้น นำ bat ไฟล์ ก๊อปไปวางไว้ใน folder ของไฟล์ภาพ

ก่อนรัน denoise.bat
 
หลังรัน denoise.bat

โดย default โปรแกรม denoise จะสร้างไฟล์ด้วยชื่อ _filtered และวางไว้ที่เดียวกับไฟล์ต้นแบบเลย

ถ้าต้องการตั้งชื่อใหม่ หรือเซฟไปที่อื่น ทาง Pixar มี flag อื่นๆ ให้เราทำได้ อันนี้ลองหาข้อมูลใน doc ดูนะครับ

https://renderman.pixar.com/resources/current/RenderMan/risDenoiseTool.html

ถามว่า จะสามารถ denoise ภาพที่เรนเดอร์จากโปรแกรมอื่นได้มั้ย... denoise tool จำเป็นต้องใช้ albedo pass ในไฟล์ exr ซึ่งหาก render engine ที่เราเลือกใช้สามารถเรนเดอร์ pass นี้ได้ ก็คงได้ละมังครับ อันนี้ผมไม่แน่ใจเพราะ V-Ray ผมยังหาวิธีเรน albedo pass ไม่ได้เลย

ถึงจะดูคล้ายๆ diffuse แต่มันเป็นคนละอย่างกัน


เดี๋ยว entry ต่อไปผมจะเอาผลการ denoise animation ต้นไม้มาลงให้ดูนะครับ

Wednesday, December 9, 2015

Mental Ray, V-ray, Arnold, Renderman จากมุมมอง Digital Domain Artist

เป็น post ที่น่าสนใจมากครับ จากคุณ Casey

- Digital Domain ปัจจุบันใช้ V-ray เป็นหลักตั้งแต่ TRON เป็นต้นมา เพราะ optimize ได้ละเอียด ง่าย และไว

- MR มีวิธีปรับหลายวิธีที่สุด เพราะระหว่างการพัฒนา มีการใส่ระบบต่างๆ เพื่อแก้ปัญหาที่เจอตามรายทาง และ MR เก็บไว้เกือบหมด ต่างกับ V-ray ที่ค่อยๆ เอาระบบเก่าๆ ออกไป จนปัจจุบันค่อนข้าง simplify

- Transformer ใช้ Renderman เพราะ asset ยกมาจากระบบเก่า คล้ายๆ กัน SSS ตัวละครหลายๆ ตัวก็ยังใช้ MR เพราะยกมาจาก shader เก่าเหมือนกัน แต่เขาบอกว่า SSS ใหม่ของ V-ray ใช้งานดีมากและใช้เต็มตัวตั้งแต่ X-men First Class

- Renderman RIS รับข้อมูลได้มหาศาลที่สุด ซึ่งในหลายๆ shot ความเร็วในการเรนเดอร์นี่ไม่เกี่ยวแล้ว ขอแค่ให้มันเรนโดยไม่แฮ้งค์ก็พอ

- บอกว่า Arnold มี ค่าให้ตั้งใน shader เยอะกว่า ทำให้ shading artist มีอิสระในการทำงานมากกว่า

- เขามั่นใจว่า TD และ Lookdev ระดับท๊อปๆ ของโลกที่เคยผ่านงานมาด้วยกัน มีใจโอนเอียงมาทาง V-ray เหมือนเขา

- AA Triangle size 2 นี่แหละที่ผมใช้มาตั้งกะสมัย 3delight

http://forums.cgsociety.org/showpost.php?p=8122955&postcount=13

UPDATE

ต่อครับ

เขามองว่า Render engine ปัจจุบันแตกออกเป็น 2 ไอเดียค่อนข้างชัดเจน คือประเภทปรับแต่งได้เพื่อลดเวลาเรนเดอร์ และพวกเน้นให้เรนออกโดยไม่สนเวลา

V-Ray  อยู่ในพวกแรก ซึ่งการที่เราสามารถตั้งแยกได้ทุกอย่างตั้งแต่ GI primary/secondary, ไฟทุกดวง, mat ทุกชิ้น รวมถึง override วัตถุได้อีกต่างหาก ทำให้ลดเวลาเรนเดอร์ลงได้มาก

ส่วน RIS ที่ปรับได้เพียง quality น่าจะตกอยู่ในเภทหลัง เป็นเพื่อน Arnold โดยเฉพาะบาง shot ใน Good Dinosaur ซึ่งใช้เวลาเรนถึง 40 ชั่วโมง เป็นตัวตอกย้ำที่ชัดเจนว่านั่นคือทิศทางของ RIS

https://www.fxguide.com/featured/making-the-world-of-pixars-the-good-dinosaur/

http://forums.cgsociety.org/showpost.php?p=8123047&postcount=18

Tuesday, December 1, 2015

Lighting study

ซีนจากสตูโอครับ  reference เหล่านี้






Thursday, May 14, 2015

FFMPEG กับไฟล์หนัง 60fps

ผมได้นำ FFMPEG มาใช้บีบ Playblast จาก Maya ด้วย H.264 มากว่า 2 ปีแล้ว ซึ่งก็ใช้ได้ดีและได้ขนาดไฟล์เล็กถูกใจมาเสมอ

จนกระทั่งโปรเจคล่าสุด มีการใช้เฟรมเรต 60 fps เป็นครั้งแรก ปรากฏว่า FFMPEG ค่อนข้างเอ๋อไปเหมือนกัน Playblast ออกมาแค่ 80 frame แต่มันพยายาม encode เฟรม 81 82 83... ไปถึง 150 บ้าง 160 บ้าง

ปรากฏว่า 1-80 ปกติดีครับ แต่ 81 เป็นต้นไปจะเป็นเฟรมเละ บางทีก็เป็นภาพซ้อน

เฟรมเสีย จาก FFMPEG
อันที่จริงวิธีแก้ ก็แค่ต้องเจาะจงความยาวของไฟล์เป็นจำนวนเฟรม ให้ FFMPEG ด้วยเท่านั้นเอง ด้วย flag -vframes แต่ทีแรกก็เล่นเอางงอยู่พักนึง

ffmpeg -y -i "uncompressed.avi" -vcodec libx264 -vframes 80 -crf 22 -bf 0 "output.mp4"

การหาจำนวนเฟรมจาก Maya ทำได้ไม่ยาก ถ้าต้องการ playback ทั้งแถบ ใช้โค้ด
startframe = pm.playbackOptions(q=1, ast=1)
endframe = pm.playbackOptions(q=1, aet=1)

หรือถ้าต้องการเฟรมเฉพาะส่วนที่ select ไฮไลท์ไว้ ใช้โค้ด
slider = pm.mel.eval('$tmpVar=$gPlayBackSlider')
startframe, endframe = pm.timeControl(slider,q=True,rangeArray=True)

จากนั้นเอาค่าที่ได้มาลบกันก็เป็นอันเสร็จ

Wednesday, April 8, 2015

Lighting for Animation!!

Gnomon เตรียมออกคอร์สใหม่แล้วครับ จาก Jeremy Vickery ผู้สอน Masterclass Efficient Cinematic Lighting คลาสสอนจัดแสงที่ผมจัดไว้เป็นอันดับต้นๆ


Instructor:  Jeremy Vickery
Link - Gnomon announced Efficient Cinematic Lighting 2: Lighting for Animation

อันนี้ Link คอร์สแรกของเขานะครับ

Friday, February 6, 2015

ต้นไม้จากเกม Airborn

เมื่อไม่นานมานี้ผมบังเอิญได้อ่าน กระทู้ของเกม Airborn บนเวบ Polycount และประทับใจต้นไม้ที่แปะไว้ในกระทู้มาก


พอมีคนถามถึง หนึ่งในทีมงาน ชื่อ katzeimsack ก็ แสดง wireframe ให้ดู ดังนี้ครับ


ดูง่ายจนไม่น่าเชื่อทีเดียว... แต่ทั้งนี้ทั้งนั้น นอกจาก Texture ต้องสวยแล้ว Vertex Normal ก็ต้องหลอกด้วยนะครับ ดูไอเดียได้ จาก Polycount wiki ครับ

Thursday, January 29, 2015

เสริมความสมจริงให้ Material (3) - เหล็กขึ้นสนิม 1

ในบทนี้เราจะเริ่มนำ texture มาผสมผสานกับเทคนิกที่ลงไว้ในบทก่อนๆ โดยเราจะเริ่มจาก material เหล็กขึ้นสนิม

Grant Warwick แสดงการทำสนิมด้วย procedural ของ MAX ซึ่งทรงพลังมาก ผมพยายามจะนำมันมาปรับใช้ใน Maya จนได้ออกมาอย่างนี้ ว่ากันตามตรง procedural ของ Maya ถือว่าล้าหลังมากเมื่อเทียบกับ MAX โดยเฉพาะ bercon noise นี่เล่นเอาผมน้ำลายไหลกระพริบตาปริบๆ อยู่พักใหญ่ๆ การจำลองใน Maya ถือว่าวุ่นวายกว่ามากทีเดียว แต่ก็ดีครับทำให้ได้ลองเล่น node แปลกๆ มากมายที่ปกติไม่เคยแตะต้องเลย ^-^

จากบทนี้ไป ผมจะต่อ gamma correction สำหรับทำงานแบบ linear เสมอนะครับ ใครไม่ได้ใช้ linear ก็แค่ไม่ต้องต่อ gamma 

พื้นผิวของสนิมขรุขระมากจนภาพสะท้อนเบลอหายไปเกือบหมด โดยยังมีไฮไลท์จุดเล็กๆ ที่เด่นขึ้นมาอยู่รอบๆ ผมคิดเผื่อไปอีกหน่อยว่าเมื่อนำไปผสมกับเหล็กแล้ว สนิมคงจะขึ้นแซมเพียงนิดหน่อยเท่านั้น จึงไม่มีความจำเป็นต้องทำซ้อนกันหลายชั้นเหมือนตัวอย่างก่อนๆ

นี่คือ Texture ที่เราจะใช้ในบทนี้

ส่วนโมเดล ผมเปลี่ยนเป็น test model ของ Grant Warwick ครับ Grant มีคอร์ส Vray บน MAX ซึ่งผมคิดว่าดีมากที่สุดคอร์สหนึ่ง ไม่แพ้คอร์สของ Viscorbel ทีเดียว

เมื่อนำภาพไปแปะ Vray Material ผลที่ได้จะขาวซีดตามแบบ texture ที่ไม่ได้แก้ gamma หากเราจะใช้ texture นี้แปะแล้วจบเลย ก็สามารถแก้ปัญหาด้วยการเพิ่ม attribute texture input gamma ได้
ซ้าย ภาพก่อนแก้ gamma ..... ขวา การแก้ปัญหาด้วย gamma attribute ของ vray

แต่ผมไม่ใช้วิธีนี้ ผมจะใช้ texture นี้เป็นแม่แบบแล้วดึงข้อมูลมันออกมาเพื่อปรับแต่งและใช้ต่อในอีกหลายๆ ส่วนจึงไม่อยากใส่ gamma ตั้งแต่ต้นทาง หลังจากปรับแต่งทุกอย่างแล้วค่อยต่อ gamma ไปที่ปลายทางเป็นวิธีที่ดีกว่า

สำหรับในบทนี้ผมจะพยายามแต่งภาพใน Maya ให้มากที่สุดและใช้ Photoshop เฉพาะสิ่งที่ทำใน Maya ไม่ได้จริงๆ เท่านั้น

นี่คือ texture ที่แก้ gamma แล้ว
 

จะเห็นว่า resolution ไม่พอ ภาพแตกเป็นเม็ดๆ สามารถแก้ได้ 2 วิธี คือหาภาพที่ใหญ่กว่านี้มาแปะ หรือไม่ก็เพิ่ม repeat UV ในกรณีนี้ผมใช้วิธีอย่างหลัง
เพิ่ม repeat UV เป็น 2 แก้ texture แตก
จากนั้นลด saturation และ contrast ลงหน่อย ด้วย node remap HSV
 

ใน node นี้จะมีกราฟ Saturation และ Value อยู่
ปรับ saturation ด้วยกราฟนี้ ถ้ากดลงจนสุดจะกลายเป็นขาวดำไป
กราฟนี้ใช้งานเหมือน curve ใน Photoshop

ลด saturation ลด contrast กดให้มืดลงเล็กน้อย

จากนั้นก็เริ่มสร้างกราฟ reflection ให้จับไฮไลท์เฉพาะด้านที่ใกล้ 90 องศาจริงเท่านั้น

G B เราจะใช้ค่าเดียวกัน จากนั้น copy ออกมาปรับเพื่อให้ R มากกว่าเล็กน้อย

ลอง render ดู

ต่อไปเราจะสร้าง bump ซึ่ง จะเอาภาพที่ใช้กับ color มาใช้เลยมันก็พอได้ระดับหนึ่ง แต่ภาพของเราจะขาด micro detail ซึ่งส่วนนี้เป็นส่วนที่ procedural สามารถทำได้ดีมาก

สิ่งสำคัญเวลาเริ่มทดสอบ procedural texture ก็คือ scale ของมันบนโมเดลจริง เพื่อความรวดเร็วและความสะดวก จับโมเดลใส่ใน render layer ใหม่ แปะ surface shader เพื่อให้ render ดูผลได้อย่างรวดเร็ว


เริ่มจาก noise ครับ

ลองต่อเข้าไปแบบไม่ปรับอะไรเลย ได้ผลอย่างนี้

จะเห็นว่ามันใหญ่มาก เราต้องปรับให้ได้ noise ที่เล็กละเอียดกว่านี้ ซึ่งค่าหลักที่จะใช้ คือ frequency และ density

ลด Depth Max ลงเหลือ 1 เพื่อให้ดูง่ายๆ ก่อน แล้วทดลองเปลี่ยน frequency

จะเห็นว่ายิ่งเพิ่ม frequency จุดจะยิ่งเล็กและละเอียดมากขึ้นเท่านั้น
Frequency 500, Density 0.1,

พอดูว่ามันละเอียดน่าพอใจแล้ว เพิ่ม Depth Max เพิ่มเป็น 4 หรือ 5 เราจะได้ micro detail มาแบบนี้

จากนั้น ผสม procedural texture อีกสัก 1-2 ชั้นเพื่อให้พื้นผิวมีความแตกต่างน่าสนใจมากขึ้น อาจจะใช้ noise ต่าง frequency กันก็ได้ ในที่นี้ผมลองใช้ fractal ดู ค่อนข้างใช้ยากกว่า noise พอสมควรเพราะ Vray ยังไม่สนับสนุน 100%

การลดขนาด fractal ไม่มีทางอื่นนอกจากเพิ่ม repeat UV

ใช้ layer texture เพื่อผสม procedural 2 ตัวเข้าด้วยกัน ผมวาง noise เป็นพื้น เอา fractal ทับ
Fractal ทับ noise ที่ alpha 0.04

นำ texture สนิมตัวเดิมมาแต่งเติมลงไปด้วย ผมต่อ remap HSV ใหม่ออกมาจาก file node อันเดิม, กด saturation ลงจนเป็นขาวดำ, เพิ่ม contrast และปรับกราฟจนได้ผลที่พอใจ


จากนั้นก็ถึงเวลาทดสอบ ต่อ out color ไปยัง bump map

ปรับ Blend mode และ Alpha บน layer texture ดูโดยไม่ได้เปลี่ยนอย่างอื่น ได้ผลอย่างนี้

setting ของ layer texture:
noise ล่างสุด
fractal: mode Difference, Alpha 0.3
image file: mode Lighten, Alpha 0.6

ถ้าลองดู Reflection Element จะเห็นว่าเงาสะท้อนถูก bump ทำให้แตกเป็นจุดเล็กๆ ทำให้ได้ไฮไลท์ที่ดูดีทั้งที่ยังไม่ได้เปลี่ยน glossiness เลย (glossiness ยังเท่ากับ 1 อยู่)
Reflection element
แต่สีสันของ texture ยังแรงเกินไปจนรบกวนผลลัพท์ที่ได้พอสมควร เราจะแก้ด้วยการวางสีน้ำตาลสีนึงทับ texture ด้วยการใช้ blend colors

สีที่ใช้ ดูดมาจากภาพ render มาปรับอีกเล็กน้อย

test render


อันที่จริงเท่านี้ก็น่าจะเพียงพอต่อการใช้งานแล้ว แต่เพื่อให้บทความนี้ครอบคลุมเนื้อหาครบถ้วน ผมจะต่อ texture เข้าไปเพื่อแตก glossiness ด้วย

ดึงสีใดสีหนึ่งจาก layer texture ที่ทำไว้ไปต่อ glossiness

 จะเห็นว่าไฮไลท์หายหมดเพราะ glossiness ลดต่ำเกินไป

ดึงมันกลับขึ้นมาแบบสุ่มสักหน่อยด้วย remap value

และนี่คือไฮไลท์ใหม่ (ซ้าย) เทียบกับอันเก่า (ขวา) จะเห็นว่ามันเริ่มแตกตัวออกมากขึ้น

final render ทุกอย่างจบใน Maya+Vray 

จะเห็นว่า เราสามารถ zoom เข้าไปใกล้ๆ ได้โดยไม่รู้สึกว่าภาพขาด detail เลย และอย่าลืมว่าเราใช้ไฟล์ภาพเพียงไฟล์เดียวเท่านั้นเอง แถมไม่ได้ใหญ่อะไรเสียด้วย แค่ 512x512

ในบทต่อไปเราจะใช้เทคนิกเดียวกันสำหรับ material เหล็ก จากนั้นก็จะนำสนิมนี้ไปรวมครับ


>> to be continued...