ฉันจะสร้างหมอกที่มีปริมาตรสูงได้อย่างไร


10

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

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

ดังนั้นคำถามหลักยังคงอยู่ - ฉันจะใช้หมอกแบบปริมาตรที่หนาแน่นและมีประสิทธิภาพได้อย่างไร

เป็นเครื่องมือเฉพาะที่ฉันใช้มันเป็นเอกภาพ

ตัวอย่างสิ่งที่ฉันหมายถึงนี่คือลิงค์ไปยังเกมที่มีเอฟเฟกต์ที่ฉันกำลังมองหา: Astromike

ตัวอย่างภาพหน้าจอจากเกมที่ใช้หมอกหนาทึบตามความสูง


บิตของ GLSL noob ที่นี่ แต่สิ่งที่เกี่ยวกับการย้อมสีพิกเซลใน shader ชิ้นส่วนตามพิกัด Y ของพวกเขาที่คุณต้องการดึงจากจุดยอด shader?
เควนติน

2
คุณได้ดูการพูดถึงความสามัคคีใน "เทคนิคพิเศษพร้อมความลึก"หรือยัง? ในขณะที่มันมีอายุหลายปีในขณะนี้หลักการยังคงใช้ พวกมันครอบคลุมทั้งหมอกที่มีความสูงและ "หมอกที่นุ่ม" ซึ่งจะรวมอยู่ในที่ว่างเปล่าและที่เล็กรอบ ๆ อุปสรรคและเนื่องจากตัวอย่างทั้งหมดเป็น Unity จึงควรใช้งานได้ง่าย
DMGregory

@ Quentin ใช่ความคิดที่ดีแม้ว่ามันจะเป็น shader ต่อวัตถุใช่มั้ย จากนั้นมันจะต้องเปลี่ยนเฉดสีมากมาย ฉันเป็น Noob ในการเขียนโปรแกรม Shader ด้วยดังนั้นฉันอาจจะเขียนเรื่องไร้สาระ แต่เท่าที่ฉันรู้ shader จุดยอดนำไปใช้กับวัตถุ และการระบายสีอาจไม่ส่งผลต่อการเคลื่อนไหว ฉันเข้าใจว่าถ้าฉันต้องการการเคลื่อนไหวทุกสิ่งเล็ก ๆ น้อย ๆ ที่เคลื่อนไหวภายในควรเป็นวัตถุดังนั้นระบบอนุภาคอาจเป็นวิธีที่ดีที่สุดที่จะไป
Candid Moon _Max_

@wondra ใช่นี่อาจไม่ใช่วิธีที่ดีที่สุดถ้าเป็นจริงความโปร่งใสมีประสิทธิภาพอย่างมาก
Candid Moon _Max_

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

คำตอบ:


24

ฉันเป็นผู้สร้าง Astromike :)

อันที่จริงฉันใช้เคล็ดลับง่าย ๆ เพื่อทำให้ดูเหมือนเป็นหมอก ฉันกำลังพัฒนา Astromike โดยใช้ Unity ดังนั้นถ้าคุณใช้ Unity คุณสามารถทำเช่นเดียวกัน แต่ฉันคิดว่าคุณสามารถสร้าง shader เดียวกันสำหรับเครื่องยนต์อื่น ๆ

สิ่งที่ฉันทำคือฉันตั้งเครื่องบินสำหรับหมอกและเพิ่มวัสดุด้วย Particle / Alpha Blended ด้วย Soft Particle Factor (0.32 ในกรณีของฉัน) shader แค่นั้นแหละ.

เครื่องบินหมอก: http://imgur.com/a/MAEFW

การตั้งค่า: http://imgur.com/NJVAaIQ

มันใช้งานได้สำหรับฉันเนื่องจากมุมกล้องและอาจไม่เหมาะกับคนอื่น

ส่วนที่เหลือเป็นเพียงกองหลังโพสต์ผล (บลูม, บทความสั้น, ฯลฯ .. ) หวังว่านี่จะช่วยได้ ไชโย


1
ว้าว! เยี่ยมขอบคุณสำหรับการแบ่งปัน! เกมนี้ยอดเยี่ยม :)
Candid Moon _Max_

ดูยอดเยี่ยมและเรียบง่ายมากลองทำในโครงการของฉัน ดูเหมือนว่าจะทำงานโดยใช้กล้องเปอร์สเปคทีฟเท่านั้น (เกมของเราคือออโธกราฟฟิค)
Jeff

นี่มันดีเกินกว่าที่จะเป็นจริงได้ฮ่าฮ่าเป็นคนที่ดี
Lestat

สวัสดี @ Mikea15 เกมที่ดูดีมาก! น่าเสียดายที่ฉันล้มเหลวในการสร้างเอฟเฟกต์ที่คุณพูดถึง - ฉันได้เพิ่ม Bloom ในกองการประมวลผลโพสต์อย่างไรก็ตามมันแพร่กระจายบนวัตถุแม้ว่าระนาบหมอกจะอยู่ข้างหลังพวกเขา (ไม่แปลกใจ) ในขณะที่สาธิตของคุณ คอลัมน์สะอาดหมดจด นอกจากนี้ใน Soft Particle Factor ของฉันจะไม่เปลี่ยนแปลงสิ่งใดโดยไม่คำนึงถึงคุณค่า มันจะดีมากถ้าคุณมีฉากสาธิตเล็ก ๆ ที่จะแสดงให้เห็น ขอบคุณ!
Dawid

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