เหตุใดจึงต้องใช้พิกัดแบบเอกพันธ์ในคอมพิวเตอร์กราฟิก


14

เหตุใดจึงต้องใช้พิกัดแบบเอกพันธ์ในคอมพิวเตอร์กราฟิก

จะเกิดอะไรขึ้นหากไม่ได้ใช้พิกัดเอกพันธ์ในการแปลงเมทริกซ์?


คำตอบ:


12

พวกเขาลดความซับซ้อนและรวมคณิตศาสตร์ที่ใช้ในกราฟิก:

  • อนุญาตให้คุณแสดงการแปลด้วยเมทริกซ์

  • พวกมันช่วยให้คุณสามารถเป็นตัวแทนของการแบ่งตามความลึกในมุมมองการฉาย

คนแรกที่เกี่ยวข้องกับเลียนแบบเรขาคณิต อันที่สองเกี่ยวข้องกับเรขาคณิตเชิง Projective


คุณกำลังมองหาตัวอย่างประเภทใด การฝึกอบรมการแปลและสิ่งที่เกี่ยวข้องกับการคาดการณ์มุมมองควรจะง่ายพอที่จะมองหา?
บาร์ต

@Bart ต้องการความคล้ายคลึง

2
ฉันขอโทษ @anonymous แต่นั่นไม่ได้บอกอะไรฉันจริงๆ คุณจะต้องใช้คำเพิ่มเติมเพื่ออธิบายสิ่งที่คุณกำลังมองหา
บาร์ต

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

5

มันอยู่ในชื่อ: พิกัดเหมือนกันนั้นดี ... เป็นเนื้อเดียวกัน การเป็นเนื้อเดียวกันหมายถึงการเป็นตัวแทนของการหมุนการแปลการปรับขนาดและการแปลงอื่น ๆ

การเป็นตัวแทนเดียวกันช่วยให้การเพิ่มประสิทธิภาพ ฮาร์ดแวร์กราฟิก 3 มิติสามารถทำการคูณเมทริกซ์กับเมทริกซ์ 4x4 ได้ มันสามารถเป็นผู้เชี่ยวชาญในการรับรู้และบันทึกในการคูณด้วย 0 หรือ 1 เพราะมันมักจะถูกใช้

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

เนื่องจากมีการเรียกร้องตัวอย่าง: PS4 ของ Sony สามารถทำการคูณเมทริกซ์ขนาดใหญ่ได้ มันดีมากที่ขายออกไประยะหนึ่งเพราะพวกมันถูกใช้แทนกลุ่มคอมพิวเตอร์ราคาแพงกว่า โซนี่จึงเรียกร้องให้ใช้ฮาร์ดแวร์ของพวกเขาเพื่อวัตถุประสงค์ทางทหารไม่ได้ ใช่ซุปเปอร์คอมพิวเตอร์เป็นอุปกรณ์ทางทหาร

เป็นเรื่องปกติที่นักวิจัยจะใช้กราฟิกการ์ดเพื่อคำนวณการคูณเมทริกซ์ของพวกเขาแม้ว่าจะไม่มีกราฟิคเกี่ยวข้องก็ตาม เพราะว่ามันมีขนาดที่ดีกว่าซีพียูเอนกประสงค์ทั่วไป สำหรับการเปรียบเทียบซีพียูแบบมัลติคอร์ที่ทันสมัยมีอยู่ในลำดับของ 16 pipelines (x0.5 หรือ x2 ไม่สำคัญมาก) ในขณะที่ GPU มีตามลำดับที่ 1024 pipelines

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


"PS4 ของ Sony สามารถทำการคูณเมทริกซ์ขนาดใหญ่ได้" คุณหมายถึงหน่วยประมวลผล Cell ของ PS3 ใช่มั้ย PS4 มีโปรเซสเซอร์ x86 ที่ค่อนข้างธรรมดา
Wumpf

ในขณะที่นี่เป็นคำตอบที่ดีฉันไม่คิดว่ามันจะตอบคำถาม OPs และประเภทของการแนะนำว่ามีการใช้ coords ที่เป็นเนื้อเดียวกันเพราะฮาร์ดแวร์ได้รับการปรับปรุงให้เหมาะกับมัน แต่ coords ที่เป็นเนื้อเดียวกันนั้นมีประโยชน์มากกว่า อีกข้อโต้แย้งสำหรับ vec4s คือมันถูกจัดเรียงแบบ 128 บิตซึ่งจะทำให้การอ่านบนบัสหน่วยความจำแบบกว้าง (GPU) มีประสิทธิภาพมากขึ้น
PaulHK

4

เสริม:

(x,y,z,0)=x,y,z0x,y,z

เกี่ยวกับการแปลงเปอร์สเปคทีฟมันช่วยให้สามารถแก้ไขได้อย่างถูกต้องโดยไม่บิดเบือนมุมมอง (ตรงกันข้ามกับฮาร์ดแวร์กราฟิกในพีซี)


2

ในฐานะที่เป็นรสนิยมส่วนตัวฉันมักจะงดเว้น (เมื่อเป็นไปได้) จากการใช้พิกัดที่เป็นเนื้อเดียวกันและต้องการสูตรคาร์ทีเซียนธรรมดา

เหตุผลหลักคือความจริงที่ว่าพิกัดที่เป็นเนื้อเดียวกันใช้ 4 รายการเล็ก ๆ น้อย ๆ ในเมทริกซ์การแปลง (0, 0, 0, 1) ที่เกี่ยวข้องกับการจัดเก็บและการคำนวณที่ไร้ประโยชน์ (เช่นค่าโสหุ้ยของการคำนวณเมทริกซ์ทั่วไป กรณีนี้).

ข้อเสียคือคุณต้องการความระมัดระวังมากขึ้นเมื่อเขียนสมการและขาดการสนับสนุนจากทฤษฎีเมทริกซ์ แต่จนถึงตอนนี้ฉันก็รอดชีวิตมาได้


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

1
@Hurkyl เห็นได้ชัดว่า สิ่งนี้ไม่ค่อยเกิดขึ้นเนื่องจากกล่องเครื่องมือเมทริกซ์ที่ใช้งานทั่วไปมีอยู่ในมือ
Yves Daoust

@YvesDaoust คุณช่วยยกตัวอย่างplain Cartesian formulationหรือลิงค์ไปยังทรัพยากรที่อธิบายการใช้งานในกราฟิก 3 มิติได้หรือไม่?
ด่าน

@ แดน: ใช้ y = Ax + b โดยที่ A คือเมทริกซ์ 3x3 และเวกเตอร์ ba 3x1 แทนที่จะเป็น y '= Axe' โดยที่ y ', x' เป็นเวกเตอร์เติมและ A เมทริกซ์ 4x4
Yves Daoust

@YvesDaoust คุณกำลังส่งเมทริกซ์ 3x3 และเวกเตอร์ 3x1 ไปที่เฉดสีของคุณแทนที่จะเป็นเมทริกซ์ 4x4 หรือเปล่า? คุณคำนวณและจัดเก็บwที่ไหน
Dan

2

[xy]
[uv]=[cos(θ)sin(θ)sin(θ)cos(θ)][xy]
[uv]=[k100k2][xy]
[uv]=[xy]+[st]

ให้ R และ S เป็นเมทริกซ์การหมุนและการปรับและ T เป็นเวกเตอร์การแปล ในคอมพิวเตอร์กราฟิกส์คุณอาจต้องทำการแปลเป็นชุด คุณนึกภาพออกว่ามันจะยุ่งยากแค่ไหน

p=SR(Sp+T)+T

M=TSRTS
p=Mp

p=[xy1]
R=[cos(θ)sin(θ)0sin(θ)cos(θ)0001]
S=[k1000k20001]
T=[10t101t2001]

p=[xyw]
Q=[1000010000100010]

1

การคำนวณในพิกัดเลียนแบบมักจะต้องมีหน่วยงานที่มีราคาแพงเมื่อเทียบกับการเพิ่มหรือการคูณ โดยทั่วไปไม่จำเป็นต้องหารเมื่อใช้พิกัด Projective

การใช้ projective พิกัด (และโดยทั่วไปเรขาคณิต projective) มีแนวโน้มที่จะกำจัดกรณีพิเศษเช่นกันทำให้ทุกอย่างง่ายขึ้นและสม่ำเสมอมากขึ้น


"การคำนวณในพิกัดเลียนแบบมักจะต้องมีหน่วยงาน": ฉันไม่เห็นว่าทำไม ในความเป็นจริงคุณคำนวณนิพจน์เดียวกันทั้งหมด
Yves Daoust

@Yves: ฉันตอบกลับหัวข้อ "การใช้ในคอมพิวเตอร์กราฟิก" ทั่วไปไม่ใช่คำถาม "การแปลงเมทริกซ์การคำนวณ" ที่เฉพาะเจาะจง

@Hurkyl: ทำเช่นกัน I. เมื่อสร้างฉากคุณจะคำนวณการแสดงออกที่เหมือนกันโดยมีหน่วยงานจำนวนเท่ากัน
Yves Daoust

@Yves: Hrm ฉันคุ้นเคยกับการคำนวณว่าการแปลงกลับไปเลียนแบบสามารถเลื่อนได้ในระดับหนึ่ง ฉันจะยอมรับความเชี่ยวชาญของคุณถ้าคุณบอกว่ามันไม่ได้เกิดขึ้นบ่อย

-1
  • สูตรที่ง่ายขึ้น
  • กรณีพิเศษน้อยลง
  • การรวมกันและ
  • ความเป็นคู่

2
คำตอบนั้นไม่ชัดเจนมาก คุณควรทำอย่างละเอียดในแต่ละจุด
Rotem
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.