Вращение модели в 3D: рекомендации по центру вращения - PullRequest
3 голосов
/ 04 марта 2010

Мне нужно разрешить пользователю перемещать, поворачивать, увеличивать / уменьшать масштаб моей сцены в 3D, который использует параллельную проекцию. Панорамирование и увеличение / уменьшение было довольно простым. Однако при использовании мыши для вращения я не уверен, что использовать в качестве центра вращения. В частности, я не уверен, на какую глубину внутри экрана должен падать центр вращения.

Вот что я делаю сейчас: возьмите центр тяжести модели и используйте его в качестве центра вращения. Однако иногда центроид может выходить за пределы видимой области (в результате панорамирования и уровня масштабирования), и пользователю (и мне самому) нелогично поворачивать модель вокруг точки, которую мы не видим.

Что считается стандартом для взаимодействия с пользователем в таком случае? Что может быть самым интуитивным поведением здесь?

PS: у меня только один порт просмотра (в отличие от Blender и друзей).

Редактировать: Было бы здорово, если бы опытные стороны могли оценить текущую практику в таких пакетах, как Google SketchUp и Blender 3D и опубликовать свое мнение.

Ответы [ 3 ]

3 голосов
/ 04 марта 2010

Вы можете попробовать направить луч от камеры к центру экрана, найти самые близкие и самые дальние пересечения, а затем установить точку вращения в средней точке точек пересечения.

1 голос
/ 04 марта 2010

Я видел несколько решений, мое любимое - позволить пользователю устанавливать (и перетаскивать мышью) центр вращения. Затем вы берете точку на модели и перетащите, чтобы вращаться вокруг этого центра. Менее хорошим, но работоспособным является центр окна просмотра, спроецированный в координаты модели.

0 голосов
/ 04 марта 2010

Я не уверен, что им это нравится больше ... но попробуйте сделать так, чтобы вращение поворачивало камеру, делало так, как в шутерах от первого лица. Это может не соответствовать идее вращения мыши, но она является одной из наиболее используемых и должна быть интуитивно понятной в течение нескольких секунд после использования для пользователя.

...