|
0 / 0 / 1
Регистрация: 13.03.2017
Сообщений: 35
|
||||||
Несколько текстур на один объект18.10.2017, 05:21. Показов 3991. Ответов 14
Привет.
Уже несколько книг по Директу посмотрел, везде о текстурах говориться "очень много". Пропишите эти строчки и у вас на кубике появится текстура. Очень полезная информация. Так вот, хотел спросить. Как "разбить кубик на индексы" чтобы потом можно было создать функцию которая бы устанавливала несколько текстур на кубик по индексу? Ну например у меня есть здание (здание не кубик конечно, но такой же набор вершин) - крыша - 1 индекс, стены - 2 индекс, дверь - 3 индекс. Я просто мог прописать:
Вообще нигде не нашел информацию как на один объект накладывать несколько текстур. Спасибо.
0
|
||||||
| 18.10.2017, 05:21 | |
|
Ответы с готовыми решениями:
14
Несколько указателей на один объект Один объект на несколько классов
|
|
61 / 54 / 21
Регистрация: 19.10.2013
Сообщений: 117
|
|
| 19.10.2017, 12:23 | |
Сообщение было отмечено GAwesoME как решение
Решение
Позвольте несколько советов/пояснений.
1. Не рекомендуется плодить огромное количество текстур. В вашем случае необходимые изображения рекомендуется собрать в одном файле, загрузить в одну текстуру, а на нужное место объекта изображение попадет с помощью текстурных координат. 2. Первый параметр метода SetTexture(...) используется не для некого индексирования фрагментов объекта, а для смешивания текстур в одном материале и означает стадии смешивания. До восьми стадий (0-7). 3. В Directx 9 есть класс/интерфейс Mesh/ ID3DXMesh с огромным количеством методов, свойств, функций. Специально для хранения "Mешей" разработан особый формат файлов(*.x). "Меши" могут содержать большое количество фрагментов, для каждого фрагмента свой материал, а материал может использовать смешивание нескольких текстур. Фрагменты "меша" проиндексированы выводятся с помощью метода DrawSubset(i), где i - номер фрагмента.
1
|
|
|
0 / 0 / 1
Регистрация: 13.03.2017
Сообщений: 35
|
|
| 20.10.2017, 02:44 [ТС] | |
|
А то что в DX11 убрали .x файлы? Стоит остаться на DX9?
0
|
|
|
61 / 54 / 21
Регистрация: 19.10.2013
Сообщений: 117
|
|||
| 20.10.2017, 11:43 | |||
|
0
|
|||
|
0 / 0 / 1
Регистрация: 13.03.2017
Сообщений: 35
|
|
| 20.10.2017, 18:01 [ТС] | |
|
Получается, что мне на каждый объект нужно создавать файл .png например со всеми текстурами которые мне нужно наложить на этот объект? Ну то есть у меня файлы
1textur.png 2textur.png 3textur.png и я их собираю в движке в один файл .png подгоняя под здание Ведь текстуры могут повторятся. Например текстуру асфальта я могу наложить и на крышу здания и на просто дорогу. Не буду же я два раза копировать эту текстуру. Добавлено через 3 часа 2 минуты Или даже допустим я пишу движок на DirectX9, то в .x файле хранится и текстура. И получается что в каждом .x файле дублируется одинаковая текстура которую я использую на разных объектах? Как-то не оптимизировано получается...
0
|
|
|
61 / 54 / 21
Регистрация: 19.10.2013
Сообщений: 117
|
||
| 20.10.2017, 19:39 | ||
|
Не запрещается для одного большого и сложного объекта (например ландшафта) использовать несколько текстур. Если Вам всё-таки необходимо для разных частей объекта использовать разные текстуры, - просто перед выводом каждой части устанавливаете нужную текстуру. SetTexture(0, ...); Но учтите, даже если текстуры загружены заранее, частое использование SetTexture(...); замедляет процесс отрисовки.
0
|
||
|
61 / 54 / 21
Регистрация: 19.10.2013
Сообщений: 117
|
||
| 20.10.2017, 20:53 | ||
|
0
|
||
|
0 / 0 / 1
Регистрация: 13.03.2017
Сообщений: 35
|
|
| 20.10.2017, 23:20 [ТС] | |
|
Просто я пишу игру скажем так с кастомизацией с помощью скриптинга. И требуется такая функция как создание какого-то стандартного объекта взятого игроком из мира (например шкафа) и можно было наложить на его дверцы текстуру другого объекта (например кожаного дивана). И получалось что-то типа кожаного шкафа.
Именно чтобы это мог делать игрок, а не я, рисуя уже одну готовую текстуру на объект. Такая возможность очень хорошо показана в SA-MP'е (GTA SA + мультиплеер) Берем текстуру со стены другого > ставим ее на индекс текстуры дома 0 > текстура на крыше Берем и меняем индекс на 1 > текстура на дверях гаража Вот как-то так...
0
|
|
|
61 / 54 / 21
Регистрация: 19.10.2013
Сообщений: 117
|
||||||
| 21.10.2017, 13:03 | ||||||
|
В самых общих чертах можно предложить следующий порядок действий
В 3D редакторе создаем модель из нескольких объектов (n) и экспортируем ее в *.x - файл. В программе создаем массив текстур (m) загружаем массив текстурами; создаем "Меш" и грузим его из *.х - файла, у него получится n фрагментов; создаем массив индексов int ind[n] заполняем его нужными номерами текстур (0 - m); выводим в цикле:
1
|
||||||
|
0 / 0 / 1
Регистрация: 13.03.2017
Сообщений: 35
|
|
| 22.10.2017, 03:42 [ТС] | |
|
Спасибо, попробую, получиться - отпишусь)0)
Добавлено через 11 часов 20 минут Все таки решил DX11 изучать. Много слишком отличий. Сейчас я пишу свой формат хранения объектов. Получилось что-то типа такого - 1) При запуске игры грузится файл в массив с глобальными координатами всех объектов и с названием файлов объектов 2) Потом грузятся файлы уже этих объектов в массив 3) При рендере каждого кадра проверяется находится ли камера в радиусе этого объекта и если да объект рендерится Как видно в файле - один объект состоит из нескольких под-объектов и наложение на них уже текстуры. Получается что для каждого из этих под-объектов нужно отдельно делать индексы для соединения вершин. И как бы если делать так - то нужно дублировать вершины для каждого под-объекта.... Как-то не оптимизировано получается...
0
|
|
|
0 / 0 / 1
Регистрация: 13.03.2017
Сообщений: 35
|
|
| 27.10.2017, 00:11 [ТС] | |
|
up1
0
|
|
|
15 / 16 / 6
Регистрация: 24.10.2017
Сообщений: 48
|
||||||||||||
| 27.10.2017, 09:32 | ||||||||||||
|
Если я правильно понял: есть модель, и хочется использовать множество разных текстур. Это можно сделать. Нужно разбить модель на субмодели, мешбуферы. Например, в 3ds max если сделать куб и сферу (просто 2 разных объекта), выделить их мышкой, и экспортировать например в OBJ, то создадутся группы. Первая для куба, вторая для сферы. Задача для твоего движка такова. Нужно сделать такую модель, которая бы хранила суб модели.
0
|
||||||||||||
|
0 / 0 / 1
Регистрация: 13.03.2017
Сообщений: 35
|
|
| 27.10.2017, 23:41 [ТС] | |
|
Ну, а на пример у меня есть куб и если и мне нужно на разные стороны - разные текстуры. И если я разделю каждую сторону на отдельную модель, то вершины будут повторяться (ну рендерить то каждую отдельную модель нужно по отдельности, значит соединять вершины индексами по не получиться). Это как-то влияет на производительность?
0
|
|
|
6 / 6 / 0
Регистрация: 28.10.2017
Сообщений: 17
|
||
| 28.10.2017, 20:14 | ||
|
Для того чтобы на модель можно было накладывать разные текстуры надо чтобы модель содержала подгруппы. ID3DXMesh предлагает делить модель на подгруппы при помощи числовых атрибутов [0,N]. Рекомендую к прочтению (гуглиться): Франк Луна - Введение в программирование трехмерных игр с DX9 В этой книге много базовых моментов объясняются достаточно подробно. Вообще чем больше DIP (draw indexed primitive) тем медленнее, но опять же здесь не линейная зависимость, к примеру 1 и 10 не заметно, а вот 1 и 10000 уже будет висеть. Я как то анализировал количество дипов в серии игр сталкер, там примерно около 500 дипов (200-800). Добавлено через 5 минут ИМХО, лучше DirectX 9 освоить, по нему материалов и избитых вопросов намного больше чем по тому же DirectX 11, управление отличается.
1
|
||
|
0 / 0 / 1
Регистрация: 13.03.2017
Сообщений: 35
|
|
| 28.10.2017, 22:01 [ТС] | |
|
Спасибо, почитаю.
0
|
|
| 28.10.2017, 22:01 | |
|
Помогаю со студенческими работами здесь
15
Как отрисовывать один объект несколько раз! HTML 5 CANVAS Как объединить несколько полигонов и создать из них один объект Не получается отрисовывать один объект несколько раз! HTML 5 CANVAS Один и тот же объект в одном выражении модифицируется несколько раз - неопределенное поведение Несколько текстур Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|