Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2018, 00:29   #1
Isaev
Пользователь
 
Регистрация: 16.03.2007
Сообщений: 13
По умолчанию Растяжение объекта в OpenGL

Создаём объект в любом 3D-редакторе.
Для простоты примера возьмём просто куб.
Но куб с фаской вдоль рёбер.
Использоваться он будет не только как куб, но и как параллелепипеды различной величины.
При простом растяжении объекта фаска на углах тоже растягивается.
Есть ли возможность этого избежать?
Т.е. грубо говоря объект делится на три части, крайние сохраняют пропорции и просто разъезжаются, а средняя растягивается?
Каким образом это реализуется в OpenGL? (пишу в Delphi, но не суть)
Isaev вне форума Ответить с цитированием
Старый 15.01.2018, 13:22   #2
coremission
Форумчанин
 
Аватар для coremission
 
Регистрация: 09.11.2017
Сообщений: 121
По умолчанию

Привет, не очень представил вашу фаску, но похоже вот так и реализуется как вы сами предложили - составными частями.
Профессионально программирую видео-игры. Пишу бекстейдж-блог о разработке игр CoreMission.net.
Разрабатываю календарь выхода игр.
coremission вне форума Ответить с цитированием
Старый 15.01.2018, 17:51   #3
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Цитата:
Сообщение от Isaev Посмотреть сообщение
Но куб с фаской вдоль рёбер.
Покажите, пожалуйста, пример, как выглядит фаска, очень интересно.
8Observer8 вне форума Ответить с цитированием
Старый 17.01.2018, 01:51   #4
Isaev
Пользователь
 
Регистрация: 16.03.2007
Сообщений: 13
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Покажите, пожалуйста, пример, как выглядит фаска, очень интересно.
Да как угодно она может выглядеть, интересен сам принцим масштабирования по осям без её искажения. Я имею ввиду, что если мы куб растягиваем по оси X например, то фаска по краям так же становится в 2 раза толще. Как этого избежать можно? Говорят скелетная анимация может решить проблемму, но нигде не нашёл примеров...

Допустим выглядит вот так:
https://i.imgur.com/pgzehLp.png

Последний раз редактировалось Isaev; 17.01.2018 в 01:54.
Isaev вне форума Ответить с цитированием
Старый 17.01.2018, 07:15   #5
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Я думаю, что единственный выход - это делать, как вы описали, то есть отделить фаску от объекта. К тому что не нужно масштабировать вы применяете операцию перемещение.
8Observer8 вне форума Ответить с цитированием
Старый 18.01.2018, 13:13   #6
coremission
Форумчанин
 
Аватар для coremission
 
Регистрация: 09.11.2017
Сообщений: 121
По умолчанию

Скелетная анимация - это по сути то же самое, что вы и показали, только вам придется сделать риг куба, заскинить эти вершины и написать сильно больший шейдер для Skinned мешей. Это очень полезно для понимания как это все устроено, но времени займет много
Профессионально программирую видео-игры. Пишу бекстейдж-блог о разработке игр CoreMission.net.
Разрабатываю календарь выхода игр.
coremission вне форума Ответить с цитированием
Старый 18.01.2018, 13:26   #7
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Ну да, как вариант можно не разбивать объект на части, для применения отдельных операций-трансформаций для разных частей, а в бесплатном Blender'е назначить группы вершин костям.
8Observer8 вне форума Ответить с цитированием
Старый 19.01.2018, 01:02   #8
Isaev
Пользователь
 
Регистрация: 16.03.2007
Сообщений: 13
По умолчанию

Цитата:
Сообщение от coremission Посмотреть сообщение
Это очень полезно для понимания как это все устроено, но времени займет много
Всё исключительно для душевной гармонии) никакие проекты не горят, времени куча, как раз для понимания интересно
Isaev вне форума Ответить с цитированием
Старый 19.01.2018, 10:38   #9
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Пытаюсь в Blender'е понять, как с помощью скелетной анимации сделать. Но кость масштабируется только в одну сторону. Возможно придётся привлекать IK (инверсную кинематику). Я пока с ней мало знаком. Не знаю, возможно ли на IK?
8Observer8 вне форума Ответить с цитированием
Старый 21.01.2018, 00:09   #10
Isaev
Пользователь
 
Регистрация: 16.03.2007
Сообщений: 13
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Не знаю, возможно ли на IK?
Мне, в общем, самому интересно через что точно возможно, тогда будет в каком направлении копать и что подучить.
Мне писали вот так: "Каждый круглый угол - жесткий скиниг на свою кость." Если это поможет.
Isaev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемещение объекта OpenGl bosyak Мультимедиа в Delphi 7 06.11.2015 05:38
Проблема с текстурированием объекта в OpenGL Argentum_47 Общие вопросы C/C++ 4 21.03.2012 18:04
С++ и OpenGl-растяжение alexblg Общие вопросы C/C++ 6 10.02.2011 15:12
как происходит вращение, растяжение объекта? Dmitry72 Мультимедиа в Delphi 3 05.11.2009 17:38
Загрузка объекта OpenGL? spamer Мультимедиа в Delphi 6 05.10.2009 18:13