| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > неправильное наложение текстуры на UVW |
| Автор: Egnech 28.12.2007, 11:58 |
| День добрый! Немогу понять в чем дело, при наложении текстуры (скажем на куб) в 3ДМаксе, она отбражается нормально, но при загрузке модели в программе происходит косяк как показанно на скриншоте... Вот так выглядит в Максе: ![]() Вот так в программе: ![]() Мне советовали отрисовывать модель по фейсам текстуры, но при этом геометрия выглядет ужастно. ЗЫ. API - OpenGL. |
| Автор: Solomon 28.12.2007, 12:03 |
| А косяк в чем? в том что только на одной грани лицо видно? ЭЭЭ а ты как рисуеш если не по фейсам? |
| Автор: Egnech 28.12.2007, 12:16 |
| Да, - косяк именно в том что лицо видно только на одной грани, а на остальных - текстура смазана, как будто "протянута" =) Отрисовываю я по фейсам точек. |
| Автор: Solomon 28.12.2007, 13:03 |
| А в максе это все одной текстурой или для каждого фейса оттельно? и если можно покажи код |
| Автор: Egnech 28.12.2007, 13:33 |
| В максе все идет одной текстурой... Вобщем алгоритм такой: 1) Достаю из файла координаты точек 2) фейсы точек 3) координаты нормалей 4) текстурные координаты 5) текстурные фейсы Потом отрисовываю: gl.glNormalPointer (GL.GL_FLOAT, 0, координаты нормалей); gl.glTexCoordPointer(3, gl.GL_FLOAT, 0 , текстурные координаты); gl.glVertexPointer(3, GL.GL_FLOAT, 0, координаты точек); gl.glDrawElements(GL.GL_TRIANGLES, sml.getLenght, GL.GL_UNSIGNED_INT,фейсы точек); И в результате вижу на экране неправильно затекстуренный бокс =( ЗЫ. Я кстате даже и не представляю как текстурить одну модель разными текстурными раскладками =( Добавлено через 2 минуты и 24 секунды Если отрисовывать по фейсам текстуры, то на экране видно только два верхних горизонтально лежащих полигона и два нижних (те на которых в первом случае текстура легла правильно). |
| Автор: atavinta 31.1.2008, 14:42 |
| Элементрано это делаеттся, не надо Хлмсом быть - Ватсон справится. Просто разбери модель на части, каждую обзови самостоятельной моделью и затекстурь как хочешь. А потом состыкуй их. Добавлено через 2 минуты и 12 секунд Кстати, что вообще за прикол - рисовать рожи сразу на всех поверхностиях. Я еще понимаю кирпичи, но рожи зачем. Рожа должна быть где-нибудь в одном месте. |
| Автор: NOT 7.3.2008, 12:39 |
| Это происходит потому, что вершин у бокса 8, а фейсов текстурный 12, потому ена дону вершину будет приходиться по несколько текстурных вершин в конечном счете. При экспорте можешь перестроить кол-во вершин, чтоб было NumFace() * 3 и соответсвенно изменить индексы. |
| Автор: FIaR 9.3.2008, 13:58 |
| Уже и не помню конечно, но сталкивался я с этой проблемой. Если память не изменяет, то у OGRE 3D в скриптовом экспортере в *.mesh как раз используется этот алгоритм перестроения вертексов и фейсов. Это конечно не самый легкий вариант, но разобраться можно. Удачи... ЗЫ ... чьято рожа на кубе, ...ммм, ...оригинально |