Marching Cubes — создание отверстий в сеткеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Marching Cubes — создание отверстий в сетке

Сообщение Anonymous »

Я работаю над реализацией Marching Cubes в Unity. Мой код основан на коде Пола Бурка с множеством модификаций. Я проверяю, является ли блок в позиции нулевым, и если да, то на него будет помещена отладочная текстура.
Изображение

Это мой сценарий MC.

Код: Выделить всё

public class MarchingCubes
{
private World world;
private Chunk chunk;
private List vertices = new List ();
private List normals = new List ();
private Vector3[] ns;
private List triangles = new List ();
private List uvs = new List ();
private Vector3[] positions = new Vector3[8];
private float[] corners = new float[8];
private Vector3i size = new Vector3i (16, 128, 16);

Vector3[] vertlist = new Vector3[12];

private float isolevel = 1f;

private float Corner (Vector3i pos)
{
int x = pos.x;
int y = pos.y;
int z = pos.z;
if (x < size.x && z < size.z) {
return chunk.GetValue (x, y, z);
} else {
int ix = chunk.X, iz = chunk.Z;
int rx = chunk.region.x, rz = chunk.region.z;
if (x >= size.x) {
ix++;
x = 0;
}

if (z >= size.z) {
iz++;
z = 0;
}
return chunk.region.GetChunk (ix, iz).GetValue (x, y, z);
}
}

Block block;

public Mesh MarchChunk (World world, Chunk chunk, Mesh mesh)
{
this.world = world;
this.chunk = chunk;

vertices.Clear ();
triangles.Clear ();
uvs.Clear ();

for (int x = 0; x < size.x; x++) {
for (int y = 1; y < size.y - 2; y++) {
for (int z = 0; z < size.z; z++) {

block = chunk.GetBlock (x, y, z);
int cubeIndex = 0;

for (int i = 0; i < corners.Length; i++) {
corners [i] = Corner (new Vector3i (x, y, z) + offset [i]);
positions [i] = (new Vector3i (x, y, z) + offset [i]).ToVector3 ();

if (corners [i] < isolevel)
cubeIndex |= (1 

Подробнее здесь: [url]https://stackoverflow.com/questions/44760112/marching-cubes-generating-holes-in-mesh[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Marching Cubes — создание отверстий в сетке
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Marching Cubes — создание отверстий в сетке
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Marching Cubes — создание дырок в сетке. Невозможно загрузить с Minio с помощью Java.
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Как выбрать одно отверстие в объекте отверстия, содержащем несколько отверстий?
    Anonymous » » в форуме C#
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Трассировка контуров с обнаружением отверстий для 2D-каракулей [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»