Я новичок в webgl. Мне было интересно, как генерируются значения вершинного и фрагментного шейдера. Я видел некоторые образцы и мог видеть огромный массив этих значений. Не мог понять, как эти значения генерируются. Существуют ли какие-либо инструменты для создания этих значений. Я что-то упускаю? Ни в одном учебнике не объяснялось, как создавать эти значения шейдера. Любая помощь в этом приветствуется.
значения вершинного и фрагментного шейдера в webgl
Ответы (2)
То, что вы, скорее всего, видите, это информация об их буфере вершин или индексов. Обычно они хранятся в виде больших массивов чисел с плавающей запятой или целых чисел, например:
[1.0, 2.0, 3.0, 0.5, 0.5, 1.0, 0.0, 0.0]
Это может, в зависимости от макета вершины, представлять позицию, координату текстуры и нормаль для одной вершины, например:
Позиция: (x: 1,0, y: 2,0, z: 3,0) Texcoord: (u: 0,5, v: 0,5) Normal: (x: 1,0, y: 0,0, z: 0,0)
И обычно вы получаете целую кучу их, разбитых вместе в один большой длинный массив. Их ужасно трудно читать, но обычно они генерируются экспортером инструментов моделирования и отправляются прямо в графический процессор, поэтому обычно не требуется много взаимодействия с человеком.
Недавно я написал о том, как вы рассказываете WebGL для интерпретации этих значений, но я точно не знаю, как много вы знаете о 3D-геометрии, так что это может быть слишком высокий уровень. Некоторые из первых уроков Learning WebGL рассказывают об этом более подробно:
Просто используйте какой-нибудь инструмент для 3D-моделирования, например Blender, Maya, 3D Studio Max, Google Sketch, на самом деле не имеет значения.
Эти значения, о которых вы говорите, генерируются этими программами, когда вы создаете в них модель, например, вы хотите создать рыбу, затем вы открываете свой инструмент 3D-моделирования, выполняете там свою работу, а затем экспортируете это в один из многих файлов. форматы для 3D-моделей, есть .x, .fbx, collada и т. д. Полученный файл будет содержать всю информацию, необходимую для рендеринга этой 3D-рыбы в любом месте, где вы хотите, он будет содержать положения вершин, координаты текстур, нормали (используемые для освещения в основном), может быть, цвета и куча других вещей.
Таким образом, вам просто нужно выбрать один из этих форматов файлов, узнать, как получить из него нужные вам данные, поместить их таким образом, чтобы их можно было оценить с помощью javascript (те массивы, которые вы сказали) и передать информацию в вершину/фрагмент шейдеры.