เข้าใจกับทิศใน Environemt map
วิธีการเข้าใจทิศใน Environment map คือการนำภาพ Environment map ที่มีการบอกทิศจาก Environment map มาแล้วจาก skylibs มาแบ่งเป็นส่วนๆ
ภาพ environemnt map จาก skylibs
เมื่อนำไปใส่ใน blender ผ่านแท็บ shading
ภาพหลังจากการใส่ environemt map เข้าไปใน blender
เมื่อเปรียบเทียบแกน จะเห็นสีแสดงตามตารางดังนี้
Blender | Skylibs
X+ | Z- (ม่วง)
X- | Z+ (น้ำเงิน)
X- | Z+ (น้ำเงิน)
Y+ | X- (ฟ้า)
Z+ | Y+ (เขียว)
Z- | Y- (เหลือง)
ต่อมาเราจะแยกภาพดังกล่าวออกมาเป็น 6 ภาพ โดยสีไม่ผสมปนเปกัน เพื่อให้แน่ใจว่าเข้าใจการทำงานของแกนต่างๆ
โดยต่อจากนี้เราจะเขียน python โดยใช้ระบบแกนของ blender
ถ้าเรามองจากด้านแกน X+ (มองเข้าไปยังแกน X-) เราจะเห็นสีของ environment map ดังนี้
โดยเราสามารถพิจารณาเป็นลูกบากศ์แนบในวงกลมหนึ่งหน่วยได้ ปัญหาคือ ถ้าเราอยากรู้มุมซ้ายบนของสี่เหลี่ยม จะมีพิกัดเป็นเท่าไร
โดยเราจะเริ่มจาก ให้ทั้ง 3 แกนมีค่าระยะห่างเป็น S เท่ากัน เพราะเป็นลูกบากศ์
ใช้พิทาโกรัส จะได้ว่าในระนาบ XY จะมีจุดอยู่ที่ S√2
จากนั้นใช้พิทาโกรสซ้อนอีกครั้งจะได้ S√3 และเนื่องจากมันแนบในวงกลมทำให้่ได้ว่า S√3=1 จึงแก้ได้ว่า S=√3/3
เราจะได้พิกัด 4 มุมมาเป็นค่าดังนี้สมมุติเราจะสร้างภาพขนาด 256x256
เพื่อความง่าย เราจะเริ่มจาก for loop กันก่อน โดยจะลองสร้างภาพที่มีการไล่สีจากดำไปขาว โดยที่มุมซ้ายบนมีค่าสีเป็น 0 มุมขวาล่างมีค่าสีเป็น 1 มุมขวาบนและซ้ายล่างมีค่าสีเป็น 0.5 ซึ่งจะหาได้โดยการนำค่าสีแต่ละแกนบวกกันหาร 2
จากนั้นเราจะทำเปลี่ยน linspace จาก 0,1 เป็น -√3/3 ถึง -√3/3 ในแกน x และ z
จากนั้นจะได้พิกัด XYZ มา ทำการแปลงเป็น spherical coordinate เพื่อเอาไปดึงค่าสีจาก environment map จึงสามารถแยกออกมาได้ตามด้านล่าง เท่านี้ก็จะสามารถดึงสีออกจาก environment map ออกมาเป็นส่วนๆ ได้แล้ว
Comments
Post a Comment