Я хотел бы создать или найти систему скинов метабола с открытым исходным кодом, которая использует метаболлы, вокселизацию для создания сеток. У меня есть 3-летний опыт работы в C \ C ++ и OpenGL. Тем не менее, я не знаю, как справиться с этой системой. То, что я хочу, — это способ реализации или способ структурирования такой системы. Есть идеи / мысли?
Вот ссылка на заметку о ком-то, кто работал над движком, который использует эту систему:
http://chrishecker.com/My_liner_notes_for_spore
я имею 3 года опыт работы на C \ C ++ и OpenGL. Тем не менее, я не знаю, как справиться с этой системой.
Мне очень трудно в это поверить.
Что вам нужно:
Система мета-частиц состоит из нескольких «мета-шариков», которые «излучают» «энергию».
«Энергия», излучаемая метеболом, может быть положительной / отрицательной, и обычно падает на расстоянии от метабола. Falloff в некотором роде похож на точечный свет, за исключением того, что вместо точки можно использовать любое математическое тело (при условии, что вы можете рассчитать расстояние до него).
Для любой данной точки пространства «энергия» системы метабола может быть, например, суммой всех энергий (они падают с расстоянием, помните?) Всех мета тел в системе.
Теперь, учитывая это «энергетическое поле», вы визуализируете систему метател, как если бы вы визуализировали изоповерхность (или любую другую процедурную поверхность).
Для любой точки пространства, если «энергия» ниже определенного порога, эта точка находится за пределами «сетки», образованной мета-частицей.
Если «энергия» выше этого порога, точка находится внутри «сетки», образованной мета частицами.
Две точки дают вам отрезок, и, зная отрезок, вы можете вычислить точку, в которой отрезок пересекает «поверхность» сетки.
Теперь, просто пройдитесь по определенной области пространства, используя алгоритм «марширующих кубов», и вы получите меш.
Нормалы рассчитываются путем выборки уровней энергии при небольших смещениях (например, x / y / z + — 0,01) точки, которая лежит на поверхности сетки.
Если это объяснение сложно, то я думаю, что у nvidia sdk были примеры алгоритма марширующих кубов. Прочитайте пример, примените те же идеи к мета частицам.
Вот что вы можете получить с помощью этого алгоритма:
Других решений пока нет …