ฉันจะพิจารณาด้วยเสียง 3 มิติและประเมินบนพื้นผิวของทรงกลม
สำหรับเสียงการไล่ระดับสีซึ่งเป็นธรรมชาติในโดเมนของพื้นผิวของทรงกลมคุณต้องมีรูปแบบตัวอย่างของจุดตัวอย่างบนพื้นผิวที่มีข้อมูลการเชื่อมต่อตามธรรมชาติโดยมีพื้นที่เท่า ๆ กันในแต่ละเซลล์ดังนั้นคุณสามารถแก้ไขหรือรวมค่าที่อยู่ติดกัน ฉันสงสัยว่าบางอย่างเช่นตารางฟีโบนักชีอาจจะทำงานได้หรือไม่:
ฉันไม่ได้เคี้ยวคณิตศาสตร์เพื่อตัดสินว่าจะต้องทำงานมากน้อยแค่ไหนในการคำนวณดัชนีและระยะทางไปยังเพื่อนบ้านทั้งสี่ของคุณ (ฉันไม่รู้ด้วยซ้ำว่าคุณจบลงด้วยการมีสี่เพื่อนบ้านที่ดีในทุกกรณี) หรือไม่ และฉันคิดว่ามันอาจมีประสิทธิภาพน้อยกว่าการใช้เพียงแค่ 3D noise
แก้ไข: มีคนอื่นเคี้ยวผ่านคณิตศาสตร์! ดูกระดาษใหม่นี้บนทรงกลม Fibonacci แมป ดูเหมือนว่ามันจะตรงไปตรงมาเพื่อปรับให้เข้ากับเสียงทรงกลม
หากคุณเรนเดอร์ทรงกลมไม่เพียง แต่ประเมินเสียงรบกวนบนพื้นผิวของทรงกลมและปรับได้ด้วยทรงกลม tessellating ของคุณเพื่อความละเอียดของตาข่ายเสียงของคุณคุณสามารถสร้างตารางเนื้อที่บนพื้นผิวของทรงกลม (icosahedron ย่อย) ปกติ):
แต่ละจุดยอดของทรงกลมสามารถสร้างการไล่ระดับสีแบบสุ่มสำหรับเสียงที่มีการไล่ระดับสี ในการรับข้อมูลนี้ไปที่ pixel shader (ยกเว้นกรณีที่คุณต้องการการประมาณค่าแบบตรงไปตรงมาเช่นสัญญาณรบกวนค่า) คุณอาจต้องการเทคนิคเช่นการแสดงโครงลวดของบทความนี้พร้อมพิกัด barycentric : ทำการเรนเดอร์แบบ unindexed แต่ละจุดยอดที่มีพิกัด barycentric . จากนั้นคุณสามารถอ่านจากSV_PrimitiveID
(หรือเทียบเท่า OpenGL) ในตัวปรับพิกเซลอ่านการไล่ระดับสีสามเสียงจากจุดยอดตามรูปสามเหลี่ยมที่คุณใช้
ฉันคิดว่าส่วนที่ยากที่สุดของวิธีนี้กำลังเกิดขึ้นกับรูปแบบการแมป ID สามเหลี่ยมของคุณกับสามตัวอย่างเพื่อค้นหาค่าเสียงในแต่ละจุดยอด
หากคุณต้องการเสียงรบกวนหรือเสียงรบกวนหลายคู่ที่ความละเอียดปลีกย่อยกว่าแบบจำลองทรงกลมของคุณคุณอาจสามารถทำตารางเนื้อที่ทางภูมิศาสตร์หยาบกับจุดยอดและทำการแบ่งย่อยในระดับพิกเซลได้สองสามระดับ เช่นจากพิกัด barycentric ให้หาสามเหลี่ยมแบ่งย่อยที่คุณจะได้รับหากตาข่ายถูก tessellated เพิ่มเติมจากนั้นหาว่า ID ดั้งเดิมและพิกัด barycentric สำหรับสามเหลี่ยมนั้น