Автор | Сообщение | |||
gammaker бывалый Группа: Участники Сообщений: 49 |
Добавлено: 27-11-2009 11:23 | |||
Как натянуть один материал на несколько кубов с разными размерами? Я знаю функцию MaterialSetTextureScale, но тогда придётся создавать много материалов для каждого объекта. Как по-другому это сделать? | ||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 28-11-2009 10:44 | |||
По-другому никак. Разве что вручную создать куб из отдельных плоскостей - им можно назначить разрешение полигональной сетки. | ||||
gammaker бывалый Группа: Участники Сообщений: 49 |
Добавлено: 28-11-2009 16:51 | |||
Я имею ввиду, что у меня, допустим, три куба с одной текстурой: 16x80x320, 160x80x16 и 16x80x16. Что, нужно для каждого создавать по шесть материалов?! Если да, то сколько они будут занимать памяти? Текстура загружается один раз или много? Приведите, пожалуйста, пример, как лучше всего это сделать. В новой версии X3D надо сделать, чтобы текстурные координаты можно было настраивать не у материала, а у объекта. |
||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 28-11-2009 21:09 | |||
В случае со стандартными кубами - да. Если надо, чтобы был один материал на все кубы, то, как я уже говорил, лучше вместо стандартных кубов создать свои - из плоскостей. Плоскостям, в отличие от кубов, можно индивидуально назначить разрешение (количество квадов по горизонтали и вертикали), что позволит многократно повторить на них текстуру.
Текстурные координаты вообще как правило не настраиваются и к материалу не имеют отношения. У примитивов их изменить невозможно, а у моделей они загружаются из файла вместе с моделью. Функция MaterialSetTextureScale не имеет дела с текстурными координатами - она изменяет текстурную матрицу OpenGL. |
||||
gammaker бывалый Группа: Участники Сообщений: 49 |
Добавлено: 29-11-2009 10:57 | |||
Можно сделать в будущих версиях X3D, чтобы можно было изменять текстурные координаты? Кстати, в U3D это можно сделать, не увеличивая при этом количество полигонов. Если я вместо примитивов буду использовать модели кубов это снизит на производительность? Если да то во сколько? Что быстрее: 6 плоскостей или модель куба? Намного ли 6 плоскостей медленнее чем куб-примитив? Можно ли плоскость разбить на дробное количество частей? Ведь текстура может повторяться, например, 7.5 раз на объекте. Меня так сильно интересуют эти вопросы, потому что у меня есть собственный редактор карт для моей игры, которую я делал на U3D. Но у U3D не очень хорошая производительность, в отличие от X3D, и я решил перейти на X3D и приспособить его под мой собственный редактор карт, который создаёт все уровни из кубов разных размеров, с разными текстурными координатами и текстурами, и записывает это в текстовый файл. В U3D с текстурными координатами проблем не было, а здесь появились. Если я не смогу найти нормального способа, мне придётся либо отказаться от редактора, либо перейти обратно на U3D, чего мне уже не хочется. |
||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 29-11-2009 16:15 | |||
У моделей это теориетически возможно. У примитивов - нет, так как они обычно вшиты в стандартную библиотеку GLU, которая работает поверх OpenGL. Можно, конечно, создать собственные классы примитивов, но этим никто не занимается, потому что в играх все используют модели, а в демках сойдут и такие.
Заметное снижение производительности начнется, когда количество кубов перевалит за несколько сотен, так как для графа сцены, разумеется, лучше рендерить один объект, чем шесть (но в такой ситуации обычно используют octree для оптимизации, так что страшного ничего не случится). А вот OpenGL, а тем более видеокарте, абсолютно безразлично как рендерить куб. На низком уровне команд OpenGL этот куб все равно будет составлен из шести отдельных квадов.
На дробное - нельзя. Как ты себе представляешь, например, 7.5 полигонов или 7.5 вершин?
Семантическая разница между U3D и X3D настолько огромна, что лучше написать новый редактор, чем пытаться оптимизировать старый. |
||||
gammaker бывалый Группа: Участники Сообщений: 49 |
Добавлено: 30-11-2009 15:49 | |||
Например, чтобы 8 вершина была в два раза ближе к 7, чем 6 и 7. Ладно, я решил изучить "чистый" OpenGL. Может даже напишу свой движок. А если не получится, то попробую способ с моделями кубов. |
||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 30-11-2009 19:43 | |||
Ну что ж, удачи тебе. |
Offtop.ru © 2003 |