กระบวนการแรสเตอร์ไรเซชันเวกเตอร์ของ Illustrator คืออะไร


18

ขณะนี้ฉันกำลังพยายามที่จะเข้าใจบางสิ่งเกี่ยวกับแรสเตอร์กราฟิกเวกเตอร์และวิธีการต่าง ๆ ที่นำไปใช้ในแอปพลิเคชันประเภทต่างๆ

ฉันทดสอบและเปรียบเทียบโปรแกรมไม่กี่โปรแกรมและสังเกตว่ามีความแตกต่างที่สำคัญในวิธีการลดรอยหยักที่ทำงานในกระบวนการแรสเตอร์ไรเซชันฉันสนใจพฤติกรรมการแสดงผลใน Illustrator เป็นพิเศษ คุณจะเห็นว่าทำไมโดยการอ่านเพิ่มเติม

ภาพฐาน

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

โปรแกรมกราฟิกแบบเวกเตอร์

ที่นี่มีกราฟิกแบบเวกเตอร์สามรายการใน Illustrator, Affinity และ Inkscape (ภาพที่สร้างใน Affinity และ Inkscape จะเหมือนกันทุกประการ)

รูปภาพที่แสดงในเครื่องมือแก้ไขกราฟิกยอดนิยม

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

แม้ว่าจะไม่มีช่องว่างในการเรนเดอร์ Illustrator แต่ขอบของรูปร่างนั้นดูเรียบเนียนเหมือนกับ Affinity render

นี่คือภาพที่แสดงพื้นที่เดียวกันของภาพแต่ละภาพที่มีการลดขนาด

การเรนเดอร์สุดหรูแสดง anti-aliasing

มีความแตกต่างที่ลึกซึ้งมากระหว่างสองภาพ การสร้าง Affinity นั้นเรียบเล็กน้อย แต่ก็แทบจะเป็นไปไม่ได้ที่จะเห็นความแตกต่างเมื่อมองภาพในขนาดดั้งเดิม

เบราว์เซอร์

การแสดงผล SVG

การแสดงกราฟิกเดียวกันที่ส่งออกเป็น SVG ในเบราว์เซอร์นั้นดูคล้ายกับภาพแรสเตอร์ที่เกิดจาก Affinity และ Inkscape

แสดงไฟล์ SVG ในเบราว์เซอร์

มีความแตกต่างเล็ก ๆ น้อย ๆ ในการต่อต้านการลบรอยหยักขอบ (ที่ไม่คุ้มค่าที่จะแสดงที่นี่) แต่ SVG rasterization ในเบราว์เซอร์ทั่วไปมีพฤติกรรมเหมือนกันมาก

เรนเดอร์ที่แสดงผล

การทดสอบ Illustrator ทำให้การแสดงผลต่อไปอีกเล็กน้อยฉันลองแบ่งกราฟิกออกเป็นส่วน ๆ แล้วส่งออกทีละชิ้นแล้วเขียนกลับไปพร้อมกับซอฟต์แวร์แก้ไขภาพแรสเตอร์

รูปแบบการจัดองค์ประกอบใหม่ของภาพ

ในทางทฤษฎีมันจะส่งผลให้ภาพเดียวกับที่มีในชิ้นเดียว แต่ผลที่ได้จะแตกต่างกันเล็กน้อยโดยใช้วิธีนี้

ผลลัพธ์ของภาพ recomposed

ดังที่แสดงเมื่อประกอบทั้งสองส่วนแล้วจะมีช่องว่างเล็ก ๆ ระหว่างพวกเขา แม้ว่ามันจะละเอียดกว่า แต่ก็คล้ายกับกราฟิกที่แสดงใน Affinity

การสร้างรูปหลายเหลี่ยม

Blender (ซอฟต์แวร์ 3D)

SVG ในวิวพอร์ตของ Blender

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

นี่คือเรนเดอร์ที่ทำจาก SVG ภายใน Blender

เรนเดอร์ที่แท้จริงใน Blender

มันไม่มีช่องว่างระหว่างสามเหลี่ยม ซอฟต์แวร์สามมิติอื่น ๆ มีแนวโน้มที่จะทำงานในลักษณะเดียวกัน ดังนั้น Blender จะทำงานเหมือนกับIllustratorหรือไม่ อาจเป็นวิธีอื่น ๆ

คำถามจริง

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

4
ตัวเรนเดอร์ทั่วไปคนอื่น ๆ ก็มีปัญหาที่เกิดขึ้นเช่นกัน ดูw3.impa.br/~diego/projects/GanEtAl14/sample.html?contour
lhf

คำตอบ:


11

เท่าที่ฉันสามารถบอกได้ Illustrator มี 2 หรือ 3 rasterizer ที่แตกต่างกัน ภาพตัวอย่างบนหน้าจอยังมีแนวโน้มที่จะสร้างช่องว่างเช่นเดียวกับการแสดงของคุณแม้ว่าจะมีการปรับเพื่อลดผลกระทบ โพสต์ของคุณดูเหมือนจะบอกเป็นนัยว่าคุณสนใจในผลลัพธ์ "ที่ปรับให้เหมาะสมกับศิลปะ "

ศิลปะได้รับการปรับให้เหมาะสมที่สุดกับการแสดงตัวอย่างหน้าจอของนักวาดภาพประกอบ

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

งานศิลปะได้รับการปรับให้เหมาะสมแล้ว

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

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

ป้อนคำอธิบายรูปภาพที่นี่

ภาพที่ 2 : การกรองหลายพิกเซลบนตัววาดภาพประกอบด้านซ้าย 'Art Optimized' บนภาพเดียวกันทางด้านขวาที่ 16x16 พิกเซลที่มีหลายห้อยเป็นตุ้มกรอง Lanczos ในพื้นที่เชิงเส้น ตรวจสอบให้แน่ใจว่าการซูมของคุณคือ 1: 1

ปัญหา

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

0=1* * * *α+2* * * *(1-α)

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

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


1
BTW สำหรับรายละเอียดเพิ่มเติมว่าทำไมการผสมอัลฟาไม่ได้ "ทำสิ่งที่ถูกต้อง" ในกรณีเช่นนี้ลองอ่านบทความนี้: Interpreting Alphaโดย Andrew Glassner
นาธานรีด

@NathanReed จะดูขอบคุณ แต่ที่นี่เป็นเพียงว่าแม้ว่าอัลฟ่าทำงานครอบคลุมที่เหมาะสมจะไม่ทราบว่าส่วนใดครอบคลุมพิกเซลและที่ไม่ ดังนั้นสองชั้นที่มีอัลฟา 50% อาจหมายถึงทึบอย่างเต็มที่หรือมองเห็นเพียงชั้นเดียวเพราะวัตถุเติมภูมิภาคเดียวกันที่เราไม่รู้จัก
joojaa

2
@ joojaa ใช่ว่าเป็นจุดที่กระดาษทำ: อัลฟาสามารถเป็นตัวแทนของความทึบครอบคลุมหรือการรวมกันของทั้งสอง :)
นาธานรีด

4

และเพียงแค่เพิ่ม: มันถูกเรียกว่าสิ่งประดิษฐ์ "conflation" และนี่คือสิ่งที่ AntiGrain Geometry ใช้คอมโพสิตrasterizer สำหรับดู:

flash_rasterizer.png http://agg.sourceforge.net/antigrain.com/demo/flash_rasterizer.png

และนี่คือสิ่งที่ NV Path Rendering อ้างว่าจะปรับปรุงเมื่อ:

คำแนะนำเกี่ยวกับ NV_path_rendering (หน้า 67) หรือคำถามที่พบบ่อย NV_path_rendering (# 29)

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