1 / 1 / 0
Регистрация: 17.01.2019
Сообщений: 16
|
|
1 | |
OpenTK загрузка текстур16.12.2019, 14:14. Показов 3688. Ответов 11
Метки нет (Все метки)
Пишу приложение для имитации полета беспилотника. За основу взяла туториал http://neokabuto.blogspot.com/... -from.html . Так-то вроде все рабочее, хоть и вылетает через раз. Но у меня возникла проблема в силу того, что я занимаюсь компьютерной графикой всего лишь месяц и не совсем еще вникла во все нюансы. Как правильно оформляются текстуры на сложные объекты. Вот как сейчас существует, как я понимаю, программа воспринимает каждый объект как куб, и пытается натянуть на него текстуры по всем сторонам.
Отсюда у меня вопрос, который подразумевает чисто порядок действий моих - что мне нужно добавить, исправить, желательно какой туториал глянуть или прочитать. Как создать текстуры на сложный объект? Допустим, на елку или на самолет? У меня модель типа obj, треугольными полигонами записаны, пишу на C# с использованием библиотеки openTK. Заранее спасибо
0
|
16.12.2019, 14:14 | |
Ответы с готовыми решениями:
11
Загрузка текстур Загрузка текстур Загрузка текстур Загрузка текстур в программу |
16.12.2019, 16:35 | 2 |
За одно вместе с OpenGL тренируйтесь в английском, изучая туториал по OpenTK и C#: https://opentk.net/learn/chapt... indow.html Призываю, как в этом туториале использовать с самого начала актуальный шейдерный OpenGL, и не тратить потом время, чтобы войти в шейдерный. А вообще, советую начало этой книги прочитать, где замечательно и очень доступно объяснено, как работают шейдеры: WebGL. Программирование трехмерной графики
Примеры из книги на JSFiddle. Запускаются по одному клику в браузере
Chapter 02. Your First Step with WebGL ch02/HelloCanvas: https://jsfiddle.net/8Observer8/2gky294r/ ch02/HelloPoint1: https://jsfiddle.net/8Observer8/cc72u1u5/ ch02/HelloPoint2: https://jsfiddle.net/8Observer8/uxw657ud/ ch02/ClickedPoints: https://jsfiddle.net/8Observer8/xf4fnc0o/ ch02/ColoredPoints: https://jsfiddle.net/8Observer8/gkkmnpga/ Chapter 03. Drawing and Transforming Triangles ch03/MultiPoint: https://jsfiddle.net/8Observer8/cty1120m/ ch03/HelloTriangle: https://jsfiddle.net/8Observer8/wk4sksnw/ ch03/HelloQuad: https://jsfiddle.net/8Observer8/g4ctyk7w/ ch03/HelloQuad_FAN: https://jsfiddle.net/8Observer8/v119e8o6/ ch03/HelloTriangle_LINES: https://jsfiddle.net/8Observer8/wwrkaxcf/ ch03/HelloTriangle_LINE_STRIP: https://jsfiddle.net/8Observer8/3ggjz4rm/ ch03/HelloTriangle_LINE_LOOP: https://jsfiddle.net/8Observer8/7vcyquro/ ch03/TranslatedTriangle: https://jsfiddle.net/8Observer8/0dp4xvyt/ ch03/RotatedTriangle: https://jsfiddle.net/8Observer8/gh9s6szm/ ch03/RotatedTriangle_Matrix: https://jsfiddle.net/8Observer8/7ze7pgpu/ ch03/ScaledTriangle_Matrix: https://jsfiddle.net/8Observer8/6xzoe63s/ Chapter 04. More Transformations and Basic Animation ch04/RotatedTriangle_Matrix4: https://jsfiddle.net/8Observer8/t4y7783v/ ch04/RotatedTranslatedTriangle: https://jsfiddle.net/8Observer8/b5yfxojp/ ch04/TranslatedRotatedTriangle: https://jsfiddle.net/8Observer8/o8voebc9/ ch04/RotatingTriangle: https://jsfiddle.net/8Observer8/x9j5vdk7/ ch04/RotatingTranslatedTriangle: https://jsfiddle.net/8Observer8/rkrv0322/ ch04/RotatingTriangle_withButtons: https://jsfiddle.net/8Observer8/wzoLmdzd/ Chapter 05. Using Colors and Texture Images ch05/MultiAttributeSize: https://jsfiddle.net/8Observer8/dsfgezbj/ ch05/MultiAttributeSize_Interleaved: https://jsfiddle.net/8Observer8/bshwnden/ ch05/MultiAttributeColor: https://jsfiddle.net/8Observer8/bveykLdf/ ch05/ColoredTriangle: https://jsfiddle.net/8Observer8/mrkpms7d/ ch05/HelloTriangle_FragCoord: https://jsfiddle.net/8Observer8/ft33yo9s/ ch05/TexturedQuad: https://jsfiddle.net/8Observer8/o3vakb3h/ ch05/TexturedQuad_Repeat: https://jsfiddle.net/8Observer8/2s7q68cc/ ch05/TexturedQuad_Clamp_Mirror: https://jsfiddle.net/8Observer8/mqu0wwma/ ch05/MultiTexture: https://jsfiddle.net/8Observer8/ztew5u0p/ Chapter 07. Toward the 3D World ch07/LookAtTriangles: https://jsfiddle.net/8Observer8/6ab11xpg/ ch07/LookAtRotatedTriangles: https://jsfiddle.net/8Observer8/944dd57h/ ch07/LookAtRotatedTriangles_modelViewMatrix: https://jsfiddle.net/8Observer8/e5t6gj1w/ ch07/LookAtTrianglesWithKeys: https://jsfiddle.net/8Observer8/38ewegg2/ ch07/OrthoView: https://jsfiddle.net/8Observer8/zebt4u7t/ ch07/LookAtTrianglesWithKey_ViewVolume: https://jsfiddle.net/8Observer8/vLcejtm1/ ch07/OrthoView_halfSize: https://jsfiddle.net/8Observer8/uvcd9h4p/ ch07/OrthoView_halfWidth: https://jsfiddle.net/8Observer8/vepodfb8/ ch07/PerspectiveView: https://jsfiddle.net/8Observer8/640pv8qe/ ch07/PerspectiveView_mvp: https://jsfiddle.net/8Observer8/w8yh4Lmj/ ch07/PerspectiveView_mvpMatrix: https://jsfiddle.net/8Observer8/hhwnx145/ ch07/DepthBuffer: https://jsfiddle.net/8Observer8/hyumw026/ ch07/Zfighting: https://jsfiddle.net/8Observer8/foc0b45t/ ch07/HelloCube: https://jsfiddle.net/8Observer8/rkpn5tyw/ ch07/ColoredCube: https://jsfiddle.net/8Observer8/80x8cyom/ ch07/ColoredCube_singleColor: https://jsfiddle.net/8Observer8/pespackq/ Chapter 08. Lighting Objects ch08/LightedCube: https://jsfiddle.net/8Observer8/4jchxo84/ ch08/LightedCube_animation: https://jsfiddle.net/8Observer8/ekw3osj7/ ch08/LightedCube_ambient: https://jsfiddle.net/8Observer8/y6qwnfe1/ ch08/LightedTranslatedRotatedCube: https://jsfiddle.net/8Observer8/pa88ujjg/ ch08/PointLightedCube: https://jsfiddle.net/8Observer8/vuq118ue/ ch08/PointLightedCube_animation: https://jsfiddle.net/8Observer8/5bj39hb8/ ch08/PointLightedSphere: https://jsfiddle.net/8Observer8/edz9Lz8f/ ch08/PointLightedSphere_perFragment: https://jsfiddle.net/8Observer8/qzwyow4j/ ch08/PointLightedCube_perFragment: https://jsfiddle.net/8Observer8/8t1umamf/ ch08/LightedCube_perFragment: https://jsfiddle.net/8Observer8/471y2t84/ Chapter 09. Hierarchical Objects ch09/JointModel: https://jsfiddle.net/8Observer8/vqse5egz/ ch09/MultiJointModel: https://jsfiddle.net/8Observer8/sL53wkn3/ ch09/MultiJointModel_segment: https://jsfiddle.net/8Observer8/ygvk7odv/ Chapter 10. Advanced Techniques ch10/RotateObject: https://jsfiddle.net/8Observer8/1f5hLmff/ ch10/PickObject: https://jsfiddle.net/8Observer8/owue624n/ ch10/PickFace: https://jsfiddle.net/8Observer8/edvw6z90/ ch10/HUD: https://jsfiddle.net/8Observer8/fLxxxs35/ ch10/3DoverWeb: https://jsfiddle.net/8Observer8/tbowcc16/ ch10/Fog: https://jsfiddle.net/8Observer8/6yf9L399/ ch10/Fog_w: https://jsfiddle.net/8Observer8/8aLvthc3/ ch10/RoundedPoints: https://jsfiddle.net/8Observer8/sjs5kmn4/ ch10/LookAtBlendedTriangles: https://jsfiddle.net/8Observer8/apoz294n/ ch10/BlendedCube: https://jsfiddle.net/8Observer8/xsrL2fs5/ ch10/ProgramObject: https://jsfiddle.net/8Observer8/jnd0j6w0/ ch10/FramebufferObject: https://jsfiddle.net/8Observer8/vaLq6d66/ ch10/Shadow: https://jsfiddle.net/8Observer8/jsnfwcae/ ch10/Shadow_highp: https://jsfiddle.net/8Observer8/brjzr00n/ ch10/Shadow_highp_sphere: https://jsfiddle.net/8Observer8/4fmyLy5f/ ch10/OBJViewer: https://jsfiddle.net/8Observer8/pws1x7uv/ ch10/RotatingTriangle_contextLost: https://jsfiddle.net/8Observer8/vs01s8Lz/ Gifts gifts/Particle: https://jsfiddle.net/8Observer8/Ltzt31vk/ gifts/Printf: https://jsfiddle.net/8Observer8/qsw7jtec/ gifts/SpecularCube: https://jsfiddle.net/8Observer8/z4xj9rbv/ gifts/TextTexture: https://jsfiddle.net/8Observer8/qt7q2kuf/ gifts/ThreeDUI: https://jsfiddle.net/8Observer8/zdw1f2st/ gifts/Wave: https://jsfiddle.net/8Observer8/eL9odthz/ gifts/WorldCoordinateSystem: https://jsfiddle.net/8Observer8/6utj3hnk/ appendix/CoordinateSystem: https://jsfiddle.net/8Observer8/dzz056jt/ Appendix appendix/CoordinateSystem_viewVolume: https://jsfiddle.net/8Observer8/apxLww1q/ appendix/LoadShaderFromFiles: https://jsfiddle.net/8Observer8/wdn9ubhj/ Ещё тут можете посмотреть примеры: Небольшие примеры на WebGL Как минимум год нужно, чтобы вникнуть в базовые вещи, отрабатывая знания на практике, переписывая одно и тоже много раз, добавляя что-то новое, стараяс не подсматривать в прошлые проекты, или подсматривая, когда действительно нужно, например, быстро сделать кому-то задание. Я изучал этот туториал. Я рад, что вы изучаете шейдерный OpenGL. Ищите видео уроки на английском, как в Blender делать UV-развёртку. Просто тренируйтесь в моделировании и раскрашивании объектов через накладывание текстур. Можно находить готовые текстуры. Например, текстуру дерева для пола, текстуры обоев для полов. Можно самому раскрашивать текстуры прямо в Blender. В Blender есть режим рисования на текстурах. Чтобы научиться делать это легко и быстро нужно много времени потратить, чтобы отработать на практике, что описывают в видео курсах. Просто тренируйтесь, выкладывайте свои работы и попытки загрузить модель, то есть делайте примеры со своими попытками и выкладывайте архив для Visual Studio, чтобы можно было запустить ваш проект и увидиеть проблему. Поставьте Blender, ищите множество туториалов (желательно на английском - у них гораздо больше качественного материала), отрабатывайте на практике, что увидили и доводите увиденное до автоматизма. Изучайте OpenGL через практику, через написание множества примеров. Девайте примеры с ипортом из .obj, а так же осваивайте .dae (Collada), так как dae помимо статики может хранить анимации и кости. Просто статические модели вам скоро надоедят и вам захочется создавать анимации, а проще всего и быстрее сделать анимации в Blender на костях (скелетные анимации) и экспортировать матрицы трансформаций (то есть Joint'ы для костей) в .dae (Collada). Но с анимациями позже. Сначала хорошенько освойтесь со статикой на .obj и можете статику из .dae загружать, там XML и на плоскости из двух треугольников разберётесь, как хранятся координаты, индексы, текстурные координаты, нормали. Терпение и труд всё перетрут.
0
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
|
16.12.2019, 16:42 | 3 |
3D modeler создает модели а так же рисует текстуры, это создаеться в Blender, 3ds Max, Maya. Сами текстуры могут рисоваться как в тех программах которые я описал выше так и в Adobe Photoshop, GIMP, так же есть редакторы в которых можно просматривать как будет текстура лежать на модели.
Ты же я подумываю, что ты программист а их задача писать софт(программы). тут в лучшем случаи используется uv координаты по которым программа знает где точно цвет должен расположиться на модели, сам цвет берется с текстуры. https://www.youtube.com/watch?v=V_J5jaiASF0 https://www.youtube.com/watch?v=l8rI3t8jEMs https://www.youtube.com/watch?v=c3Rq4TgtpiY https://www.youtube.com/watch?v=ivPdLPaEN3A
0
|
16.12.2019, 17:22 | 4 |
Я считаю, что программист должен иметь базовые навыки работы в Blender и GIMP. Хотя бы уметь сделать UV-развёртку кубика, покраску текстур (или наложение изображений на UV) в GIMP. А так же основы создания анимаций и Blender. Без элементарных знаний в Blender и GIMP и минимальной практики в этих очень сложно осваиваться с 3D графикой программисту. Это мой подход, это моё мнение и я его не навязываю, просто высказываю, какой у меня подход, а каждый в праве решать, какой дорогой ему идти и как ему проще, интереснее.
SnufkinJox, очень быстро вы поймёте, что вам нужно будет выводить текст в ваших приложениях. Это вам пример на C#, OpenTK: https://github.com/8Observer8/... GL20CSharp Скачайте ,он вам пригодится в будущем. Запустите, попробуйте, работает или нет. Можно использовать любой шрифт конвертированный в BMFont с помощью программы: Bitmap Font Generator Берёте люой TrueType (ttf) и конвертируйте в BMFont. Этот же пример может выводить текстурированные объекты и цветные объекты. В камере поменяйте матрицу проекции с ортогональной на перспективную и будет выводить в 3D. Так же там есть код загрузки и работы с текстурами. Буквы - это текстуры на прямоугольниках.
0
|
1 / 1 / 0
Регистрация: 17.01.2019
Сообщений: 16
|
|
17.12.2019, 04:57 [ТС] | 5 |
Здравствуйте. Я так поняла, что это начало мануала на OpenGL для чистых сей https://learnopengl.com . Правда, у меня по большей части мало чего получалось из написанного. По хорошему надо было вдумчиво с книгой сидеть и на плюсах прогать, но у меня просто сейчас нет времени, чтобы потом под шарпы переписывать - весь остальной проект готов и он на шарпах написан. Но, наверное, есть смысл там поискать про текстурирование.
Я, собственно, через блендер и делаю obj. Поскольку в блендер не умею, то в солиде модельки делаю, перегоняю их и создаю obj. Правда, у меня есть сомнения определенные, что у меня объект не центрирован. Я пыталась недавно делать UV развертку в блендере, рисовала по ней текстуры, но у меня какая-то дичь на объекте появилась, закономерность я не поняла... ну, и, собственно, все - мозговой процесс встрял. Он хороший, я благодаря нему вообще что-то смогла сделать, но вот... я тупой))) Я прикреплю, что у меня вышло на данный момент. Буду читать, смотреть. Мне лично кажется, что нужно как-то иначе текстуру натягивать, нежели на куб, но я почитаю и попробую. Попытаюсь порисовать еще. Спасибо)
0
|
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
17.12.2019, 14:05 | 6 |
Вы ответы вообще читаете?
Гуглите что это. Деревья обычно так не делают. Очень много полигонов кушают. Гуглите кто такой billboard tree. FPS контролируете? Я думаю для симулятора важней всего FPS и реалистичность физики полета: разгон, торможение с инерцией. Физика поведения дрона на первом месте. Красивости и текстуры на втором плане. Почему бы вообще не оставить такую мультяшную графику без текстур? Всеравно деревья конусы, такие облака и земля… такой стиль без текстур подходит по дизайну. По идее так будет даже больше FPS. Скорей всего при полете на высоте будут лаги т.к. нужно будет оптимизировать уровень деталей от высоты и т.д. Тут наверно лучше брать игровой движок а не пилить с нуля. И у вас вопрос не загрузки текстур а скорей импорта готовой 3д модели.
0
|
17.12.2019, 15:28 | 7 |
Тот туториал, что я выше скинул, это как раз перевод данного туториала из C++ на C#. Здесь если посмотреть: https://opentk.net/learn/index.html Написано следующее:
Welcome to LearnOpenTK, your home for getting started with OpenTK. We've ported the tutorials made by the great guys over at LearnOpenGL over to C# so that it's easier for you to see how OpenTK works. These tutorials are derived from LearnOpenGL, all of the code has been translated to C# and substantial portions of the original text, images, textures, and/or other assets may have been used in these tutorials. LearnOpenGL and LearnOpenTK are licensed under Creative Commons Attribution 4.0 International. То что не центрирован - это нестрашно. Нужно следить, чтобы к объекту был применён Scale (Object -> Apply -> Scale) Практика, практика и ещё раз практика.
0
|
18.12.2019, 21:17 | 8 |
SnufkinJox, попробуйте сделать новый маленький проект, где будет два объекта: куб с текстурой и что-то посложнее, что вы загружаете из obj-файла. Покажите скриншот, что получается и этот маленький проект запакуйте в архив и прикрепите к сообщению. Когда что-то повторяешь в отдельном маленьком проекте, то лучше понимать начинаешь. А то у вас, наверное, огромный проект сейчас и уже трудно в нём что-либо понимать. Может вы в процессе написания такого маленького проекта с кубиком и объектом (дроном, например) вы сами найдёте какие-то ошибки.
0
|
17 / 2 / 1
Регистрация: 12.11.2021
Сообщений: 27
|
|
21.11.2021, 22:58 | 9 |
Я работаю с 2d графикой в данный момент. Если вам нужна загрузка текстур. У меня тоже была эта "белая" проблема. Зайдите ко мне в профиль. Там у меня есть тема. Зайдите, прокрутите в самый низ. Последний ответ. Там будет порядок действий для C# и OpenTK.
0
|
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,743
|
|
22.11.2021, 08:32 | 10 |
Ключевое слово "UV координаты", как они построены - так и будет натягиваться. Формально UV - координаты сохраненные в модели для каждого вертекса (хотя есть и др способы хранения). Если модель не имеет UV - рассчитывать не на что, максимум наложить текстуру на плоскость. Само по себе "наличие" UV еще ничего не гарантирует, обычно подразумевается что UV разумны. Также часто подразумевается что UV - нормированные координаты плоского имеджа, т.е. числа x и y от 0 до 1. Хотя это всего лишь предположение, в общем случае используются 3 координаты (UVW) которые могут иметь любые значения.
Чтобы понять как ляжет текстура - найдите любой редактор UV (напр упоминавшийся blender), загрузите туда Вашу модель и посиотрите UV (они могут выглядеть очень необычно/фантастично). Вообще какое-то (полноценное) 3D приложение должно быть всегда под рукой
0
|
0 / 0 / 0
Регистрация: 17.07.2019
Сообщений: 2
|
|
03.05.2022, 12:36 | 11 |
8Observer8, 8Observer8, Здравствуйте! Можете помочь с небольшим проектом по opentk? Необходимо написать скринсейвер и расставить свет. Как можно с вами связаться?
Спасибо!
0
|
03.05.2022, 12:54 | 12 |
1
|
03.05.2022, 12:54 | |
03.05.2022, 12:54 | |
Помогаю со студенческими работами здесь
12
Загрузка текстур в OpenGL Загрузка текстур OpenGL Загрузка не квадратных текстур Загрузка текстур в Java Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |