Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


04:04.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru