2013-06-09 4 views
1

Я пытаюсь создать тип minecraft (только кубов), объединив кубы в правильных положениях в одну геометрию, а затем создав сетку и нарисуя ее. На данный момент я отправляю массив с сервера Node.JS, который содержит типы блоков, которые составляют каждый «кусок». Затем код знает индекс материала для каждого блока. Например, данные для 10x10x10 куска будет:Создание граней только из вершин?

[1,1,1,1,1,1,1,1,1,1, 
1,1,1,1,1,1,1,1,1,1, 
2,1,1,1,2,2,1,1,1,2, 
etc ...    ] 

Это будет работать нормально, но слияние каждого из этих блоков в одной геометрии отнимает много, поэтому не работает для моего случая использования времени.

Теперь я хочу объединить кубы на стороне сервера, а затем отправить только клиенту вершины вместе с массивом типа блока (то же, что и выше). Поэтому мой вопрос: возможно ли создавать грани для этих вершин, чтобы геометрия отображалась как несколько кубов с разными материалами?

Я чувствую, что это было бы лучше, так как не только клиентская сторона была бы менее подвержена стрессу, но серверу приходилось только объединять каждый кусок один раз, где на данный момент каждый клиент должен объединить его.

Любая помощь была бы принята с благодарностью! Благодарю. :)

EDIT:
Просто была мысль после reading this. Если при инициализации я создаю геометрию, которая представляет собой целый кусок с блоками, поэтому 10x10x10, то при отправке массива данных (как указано выше) я мог бы скрыть лица блоков, которые не должны быть там. Скрываясь, я имею в виду дать лицу невидимый материал. Я считаю, что это будет быстрее и даже не потребует от меня отправки вершин.

В таком случае может ли кто-нибудь объяснить, как я определяю, какие лица скрыть? Благодарю.

ответ

1

Вы можете создать «родную» модель Three.js JSON непосредственно на сервере и просто загрузить его с помощью JSONLoader. Быть быстрым. Это немного кратко документировано, но здесь: https://github.com/mrdoob/three.js/wiki/JSON-Model-format-3.1, и вы можете изучить образцы файлов в папке примеров. Это довольно легко понять.

В JSON вы можете иметь несколько материалов и определять индекс материала на лице.

+0

Спасибо Яку. Собирался отправить всю модель JSON, но обнаружил, что размер слишком велик. Блок размером 10x10x10 будет ~ 1,3 МБ, где, как если бы я отправлял только вершины ~ 100 КБ. Вот почему я хотел знать, можно ли добавлять грани к модели, используя только вершины (вместе с блочными данными в массиве). Есть идеи? :) –