Как убрать курсор в блендере
Простой Blender. Часть 2
КДПВ 2.
Продолжение рассказа о том, что Blender — это несложно, написанный непрофессионалом. Вот начало рассказа.
Техники моделирования
Итак, примитивы и модификаторы. Но сначала — еще немного про UI.
Работа с программой
Upd. По рекомендации Leopotam: нажатия горячих клавиш идут в активную область Blender. В непонятных ситуациях — попробуйте переместить мышку в интересующую вас область и повторить.
Область 3D
Вся работа с геометрией ведется в этой области. Еще раз скрин:
Рисунок 1. Область 3D.
Про панели
Если вам нужно создать объект, повернуть его, сгруппировать с другим, физику назначить (есть и такое, да), не используя меню/горячие клавиши — это налево, в панель работы с объектами. Частью этой панели является панель детальной настройки операции. Там же назначаются точные стартовые параметры примитивов, например. Если хочется что-нибудь потюнить и непонятно где смотреть — загляните сюда.
Если нужно картинку на фон подложить (разную в зависимости от проекции — очень удобно), нормали отобразить, настроить длину отрезка обрезки вьюпорта (вряд ли вам понадобится это сходу) — это направо, и на горячие клавиши это вроде не завязано.
3D курсор
Как я уже упоминал ранее, у Blender есть такая вещь, как 3D курсор. Им можно указать на любую точку в пространстве сцены. Эта точка будет использоваться как origin point для вновь созданных примитивов. Можно передвигать кликами, можно — заданием значения (панель, вызываемая по N):
Рисунок 2. Поля для ввода численных значений требуемых координат 3D курсора.
Аналог в маске отсутствует — там ориджин указывается в момент OnMouseDown и исчезает при OnMouseUp.
Фича не плохая и не хорошая — просто не так, как в максе.
Эти клавиши связаны с курсором и помогают хоть как-то выровнять ситуацию с отсутствующим “align to” (передвинуть объект в центр сцены, например).
Shift-S. Выдает следующее меню:
Здесь selection — выделенный объект, center — центр координат.
Ctrl-Alt-Shift-C. Самое пальцеломное комбо из активно мной используемых:
Origin — это аналог pivot-point в максе, точка объекта, вокруг которой он вращается.
Сочетания этих команд позволяют хоть как-то костылить поведение “align to”. BF, проснись, пальцы бастуют.
Можно завязать точку зрения камеры текущей 3D области, если явно обозначить такое желание в настройках во все той же панели по N:
Я активно пользуюсь этой возможностью — кликать курсором в интересующую меня точку с мгновенным переносом камеры области. К сожалению для меня, начиная с версии 2.74 мгновенного переноса уже нет — нужно каждый раз подтверждать переход клавишей Home. Поэтому я сижу на 2.73. Но это дело привычки. И могли бы и в настройки засунуть.
Создание примитивов
Сюзанна
В максе примитивом со сложной геометрией является чайник. В Blender — голова обезьяны по имени Сюзанна. Находится в Mesh->Monkey:
Рисунок 6. Вообще Сюзанна гораздо более квадрированная, но для первого знакомства я сгладил ее субдивиженом (см. ниже).
Базовые операции над объектами
Кнопка 1 включает/выключает отображение визуальных контроллеров.
Кнопки 2 переключают операцию и контроллер для нее:
Рисунок 8. Контроллеры для перемещения, поворота, и растяжения/сжатия.
Тянем за цветную ось на контроллере — совершаем операцию строго относительно оси данного цвета (цвета осей — внизу слева в области 3D). Тянем за белое кольцо — делаем операцию, не оглядываясь на оси.
Выпадающий список 3 позволяет указать систему координат, в которой делается операция — порой помогает.
Замечу, что вызов операции по горячей клавише срабатывает, даже если объект находится вне вьюпорта. Через UI, понятное дело, так сделать нельзя — не видно контроллеров.
Параметры и модификаторы
Небольшое отступление.
Как вы уже знаете, в Blender нет «главного» окна/вида/etc. Соответственно, для настроек параметров объекта (положение, название, текстуры, примененные модификаторы и так далее) используется область настроек. Она табированная, и первые 4 таба всегда доступны (даже если объектов на сцене нет). Это потому, что они позволяют настроить те вещи, которые есть всегда, пока есть сцена. Это вкладки рендера, мира и собственно текущей сцены (также всегда доступна вкладка текстур, но я сейчас немного о другом).
Как только вы выделяете какой-то объект, в этой области добавляются вкладки, относящиеся к объекту. Они сохраняются даже если снять выделение с объекта. А вот если выделить объект и удалить его — вкладки объекта опять исчезнут:
Рисунок 9. UI области настроек. Слева — постоянные вкладки, справа — объектные
Область настроек
Подробная работа с параметрами объекта ведется с помеченными вкладками:
Рисунок 10. UI области настроек. Самый востребованные вкладки
На скрине я свернул все подгруппы вкладки “Объект” (чтобы не вставлять в текст простыню) — по дефолту некоторые из них развернуты. Числом 5 обозначено поле для ввода имени объекта.
Вкладка модификаторов
Тут находится, фактически, аналог стека модификаторов макса. Но с гораздо более приятным UI, по-моему. Вот Сюзанна, которой довели количество полигонов до 126 000 (модификатор Subdivision surface), затем натянули на шар (модификатор Cast), а потом у результата срезали количество полигонов до неприличных 600 (модификатор Decimate):
Рисунок 11. Участь Сюзанны нелегка. Но с ней и не такое проделывают — погуглите.
Выпадающий список позволяет добавить модификатор, панели под ним — это собственно UI добавленных модификаторов по очереди (самый верхний применяется самым первым). Вот сравнение стеков Blender и макса:
Рисунок 12. Стек Blendera vs. стек макса
Как видно, UI стека модификаторов макса — это “списковая форма” + “детальная инфа для выделенного элемента”, а Blender — “список детальных окошек”. У каждого решения свои плюсы и минусы.
Ну и напоследок
Для понимания, что такое контрол дропа против корейцев в Blender, попробуйте следующее. Запустите Blender, ткните мышкой в 3D область, а затем… Затем уберите руку с мыши и просто нажимайте написанные ниже клавиши. Если собьетесь — рекомендую начать сначала.
Объяснение почти всего произошедшего я уже описал в этой серии.
Часто на форумах спрашивают, как работать с мышкой в GE?
Я нашел отличный урок, в котором автор (Andrew-101 из Австралии (Мельбурн)) популярно рассказал об этом и дал пример файла.
Если вы серьезно решили делать игру или просто хотите пропробовать свои силы в мини-игре, вам понадобится разобраться с использованием мыши.
В этом уроке я расскажу как использовать мышь в GE, получать информацию с нее и затем использовать эту информацию. В примере есть 8 сцен которые помогут вам разобраться с этим досконально, а именно:
* Как отобразить курсор мыши в GE.
* Как получить координаты курсора мыши
* Как получить координаты курсора мыши относительно центра экрана
* Перемещение камеры за курсором
* Перемещение объекта с помощью мыши
* Мгновенно переместить объект в точку экрана где вы кликнули мышкой
* Плавно переместить объект в точку нажатия мышки
* Заставить объект появится в месте нажатия мышки и передвигать эти объекты
Для начала необходимо иметь некоторые навыки Python в GE.
«Проявляем» курсор мышки в GE
Если вы планируете использовать мышь в GE тогда нам для начала надо отобразить сам курсор мышки.
Для этого нам понадобятся лишь две строчки кода:
Получаем координаты курсора мыши.
Как их получить? В файле примера для этого откройте сцену 2 и скрипт example02. Кликните на пустышке с именем (‘Control2’) и в окне Logic посмотрите скрипт контроллера. Для получения координат используются две функции:
mouse_x = mouse.getXPosition()
mouse_y = mouse.getYPosition()
Координаты даются относительно верхнего левого угла.
Это очень просто, не правда ли?
Получение координат курсора относительно центра экрана.
window_width = Rasterizer.getWindowWidth()
window_height = Rasterizer.getWindowHeight()
(Rasterizer.getWindowWidth() / 2, Rasterizer.getWindowHeight() / 2)
Если мы хотим теперь использовать эту точку как начало координат, то должны из координат вычисляемых точек отнимать координату центра окна (320,240).
Надеюсь теперь понятно, почему для получения координат относительно центра мы проделывали эту процедуру.
Перемещение камеры за мышкой
Во многих случаях вам понадобится знать как вращать камеру с помощью мыши. В файле примера выбираем сцену и смотрим скрипт Example04. Чтобы посмотреть как это работает нажимаем P.
Теперь мы преобразовываем результат координат в число с плавающей точкой. Зачем это понадобилось? Причину находим в следующей строке:
Зачем я применял float к координатам мыши? Потому что если мы поделим целое число 40 на 500 то получим 0 а когда число с плавающей точкой то 40/500=0.08.
Если вы не знаете зачем нужна эта строка кода, следует подучить python в GE, с его помощью мы активируем наш актуатор с установленным значением поворота камеры.
Rasterizer.setMousePosition(window_width/2,window_height/2)
Эта строка устанавливает положение курсора мыши снова в центр экрана.
Перемещаем объект с помощью мыши.
Перейдем к более интересным примерам, выбираем сцену 5 файла и смотрим скрипт Example05. Если нажмете P и запустите GE, то сможите кликом и ужерживанием на кубе перетаскивать его.
own.setPosition([hit_pos[0], hit_pos[1], hit_pos[2]])
Нажмите P и попробуйте передвинуть куб. Видите о чем я говорю? Вот почему я должен установить положение y куба в 0, чтобы он по этой координате оставался в одном месте.
Вот основной код:
if mouseOver.isPositive() & leftClick.isPositive():
hit_pos = mouseOver.getHitPosition()
own.setPosition([hit_pos[0], 0, hit_pos[2]])
Если вы не знаете что такое if надо немного подучить python. Это очень просто, эта инструкция говорит: когда срабатывает сенсор mouseover (isPositive=True) и нажата левая кнопка мыши, то положение объекта устанавливается в положение курсора мыши (а координату y объекта приравниваем к 0, чтобы объект не наезжал на камеру).
Мгновенное перемещение объекта к точке нажатия мыши
Теперь мы используем сенсор mouseoverany и он будет срабатывать всегда, так как мы находимся над плоскостью. Однако он сработает даже тогда, когда мы не пересекаем куб и куб моментально перейдет в точку нажатия.
Плавное перемещение объекта объекта к месту нажатия мышки.
Давайте попробуем сделать что-то получше чем мгновенное перемещение куба в точку клика, давайте будем перемещать куб плавно к точке нажатия и вслед за мышкой.
Следующая сцена, следующий скрипт. Нажимаем P и рассматриваем. До того, как посмотреть как это работает надо знать методы работы. Есть три метода в этом скрипте: getQuadrant(), getAngle() и track().
Начнем с getQuadrant():
def getQuadrant():
if own_pos[0] >= cube_pos[0]:
if own_pos[2] >= cube_pos[2]:
quadrant = 1
else:
quadrant = 4
else:
if own_pos[2] >= cube_pos[2]:
quadrant = 2
else:
quadrant = 3
Когда метод нашел в каком квадранте находится пустышка (нажат курсор) он возвращает информацию:
return(quadrant)
Следующая функция, которую мы рассмотрим это getAngle(). Этот метод даст нам значение угла, образованного координатами куба и пустышки.
Вот код:
x = cube_pos[0]
z = own_pos[2]
pivot.setPosition([x, 0, z])
Диаграмма поможет нам лучше понять, что происходит.
Как вы видите из диаграммы, мы берем за точку pivot (центр) для вычисления угла координату X куба и координату Z пустышки, чтобы сформировать правильный прямоугольный треугольник. И надеюсь вы знаете что такое прямоугольный треугольник ;). Давайте посмотрим на вторую строку в коде:
from math import atan, degrees
Теперь, когда у нас есть стороны, давайте найдем угол:
Вы может не понимаете еще зачем нужны x_rise, z_rise сейчас, но подождите и все скоро поймете. Теперь мы возвратим эти значения из функции:
return(x_rise, z_rise)
Затем вызывается метод getAngle() и сохраняется результат в переменных x_rise и y_rise:
x_rise, z_rise = getAngle()
Теперь мы используем значения полученые с помощью getQuadrant(), и решаем в каком направлении надо совершать движения по осям. Если пустышка в 1-ом квадранте, до двигаться надо в положительную сторону по осям X и Z, если во втором квадранте, то движение в отрицательную сторону по оси X и в положительную сторону по оси Z.
Помните как я сказал что мы собираемся сделать так, чтобы куб двигался постепенно приближаясь к пустышке? Мы будем использовать расстояние от куба до пустышки как фактор, влияющий на скорость, с которой куб приближается.
distance = own.getDistanceTo(cube)/5
Я поделил на 5 потому что иначе будет слишком быстро. Давайте установим параметры актуатора куба:
motion.setDLoc(x_ratio * distance * x, 0, z_ratio * distance * z, 1)
GameLogic.addActiveActuator(motion, 1)
Используется величина расчитанного фактора расстояния умноженная на фактор направления и величину перемещения по осям. Как и в прошлом примере, для оси Y мы вписали 0.
Осталось совсем немного кода, спросите зачем еще что-то? Это для пустышки:
if mouseOverAny.isPositive() & leftClick.isPositive():
hit_pos = mouseOverAny.getHitPosition()
own.setPosition([hit_pos[0], 0, hit_pos[2]])
Где то вы это уже видели? 🙂
Рождаем объекты в месте клика мышки
Теперь последний пример из урока. 8 сцена, скрипт example08_1. Посмотрите, чтобы был включен слой 1. Нажмите P и покликайте мышкой на экране. В местах клика будут появлятся и падать кубы. Вы можете «ухватить» правой кнопкой мыши новый куб и потаскать его.
if not rightClick.isPositive():
own.selected = 0
if own.selected == 1:
hit_pos = mouseOverAny.getHitPosition()
own.setPosition([hit_pos[0], 2, hit_pos[2]])
Все что делает этот пример перетаскивания это комбинация нашего первого примера перетаскивания и второго примера перетаскивания, вы можете двигать мышкой очень быстро, но куб не отвалится пока вы удерживаете правую кнопку мыши.
С момента выхода Blender 2.79 прошло больше года, настало время самого крупного релиза в истории Blender. Интерфейс преобразился, оставив узнаваемые черты. Горячие клавиши поменяли, изменили подход к разработке самого ПО. На смену Blender Render и Game Engine пришел новый реалтаймовый рендер – EEVEE. Первое что бросается в глаза при запуске – это интерфейс. Он переписан с нуля в угоду модульности кода, что позволяет обновлять часть кода, не затрагивая другие компоненты. Последняя версия на момент публикации статьи Blender 2.81a.
В блоге будут рассмотрены основные функции Blender, которыми вы будете пользоваться в 90% случаев.
Интерфейс Blender 2.79
Интерфейс Blender 2.81
Загрузка Blender.
Скачать Blender можно с официального сайта, Windows Store и Steam. Установка стандартная и проблем возникнуть не должно.
Системные требования указаны на официальном сайте.
Выбор версии Blender.
Первый запуск.
Интерфейс Blender 2.81a
Splash screen (Заставка).
При запуске программы вы увидите стартовую заставку (Splash screen), которая позволяет быстро настроить программу.
Quick Setup:
Что это меняет?
Left:
ЛКМ – выбор объекта.
ПКМ – контекстное меню (W).
W – смена режима Select Tools.
Right:
ЛКМ – перемещение 3D- курсора.
ПКМ – выбор объекта.
W— контекстное меню.
Load 2.79 Settings – загружает настройки Blender 2.79, если у вас до этого стояла предыдущая версия, иначе будет кнопка Next.
Save New Settings – Сохранить новые настройки.
При нажатии на Next появится новое меню.
Основное меню Splash Screen
Интерфейс.
Меню Заголовка.
Меню Заголовка
Logo Blender:
Render:
Меню Render
Window:
Меню Help
Preferences (Настройки).
Interface:
Результат Confirm Threshold
Themes:
Изменение цвета иконок
Viewport:
Lights:
Библиотека пользовательского света, маткапа и HDR-ок. Поддерживаются маткап из Zbrush в виде картинок.
Editing:
Animation:
Add-ons:
Input:
Navigation:
Keymap:
Keymap
Pie Menu on Drag – активирует пай меню, при зажатии клавиши (Tab, Z,
) и перемещении мыши. По умолчанию при нажатии Z и
).
Navigate – включает навигацию вида.
Extra Shaiding Pie Menu Items – включает дополнительное опции при нажатии на Z.
System:
Save & Load:
Blend Files:
Auto Save:
File Browser:
File Paths.
В File Path указываются пути, где программа будет искать данные для поиска. Путь // относится к папке текущего открытого файла
Render:
Applications:
Workspace (Рабочие Пространства).
Нажав ПКМ на вкладке рабочей области, появится контекстное меню.
Рабочие пространства никак не зависимы от программы. Вы можете удалить все, работая только в одном рабочем пространстве Layout.
— Слои рендера позволяет разбить сцену на несколько слоев. Настраивается в настройках слоя.
Работа с окнами.
В отличие от других программ, окна в Blender не привязаны к какой-либо области интерфейса, и в любой момент их можно скрыть или заменить другим окном.
Список всех окон в Blender
Окна в Blender разделены областями (Areas). Области обозначаются закругленными краями.
Потянув за область окна можно изменить размер окна.
Изменение размера окна
Наведя курсор на край области, курсор изменится на крестик, потянув за который создаться дубликат окна.
При создании окна курсор поменяется, обозначающий, что окну можно изменять размер.
Иконка размера окна
Наведя на край области, и потянув в противоположную сторону, появиться стрелка обозначающая, что окно можно свернуть.
Стрелка закрытия окна
Если подобным способам создавать окно неудобно, существует альтернативный способ.
Нажав на границу области, появится настройки области.
Viewport (Вьюпорт).
Заголовок.
Заголовок окна без Tool Settings
Editor Type.
В данном меню расположены все редакторы доступные в Blender.
Object Modes
В Blender существует несколько режимов работы. Меню и кнопки меняются в зависимости от режима. Некоторые режимы доступны только для определенных типов объектов. По умолчанию всегда включен Object Mode. Рассмотрим каждый из них.
Local View:
Cameras:
Основные:
Дополнительные:
Back— переключение на вид сзади Ctrl+Numpad 1.
Shift+Numpad 4,6 позволяет наклонить камеру влево или вправо.
Align View:
View Region:
Area:
Select:
Способы выделения объектов. Меню изменяется в зависимости от режима и типа выделения (Вершин/Ребер/Граней).
В меню Add список всех объектов, которые можно добавить в сцену. При подключении аддонов список может увеличиться.
Image:
Object:
Данное меню показывает все возможные операции с объектом. Рассмотрим только самые основные.
Convert to:
Show/Hide:
Transform Orientations (Трансформация Ориентации):
Transform Pivot Points.
Transform Pivot Points
При вращении, масштабировании объекта или группы вершин,ребер и граней вы можете сместить точку опоры (Pivot Points).
Snap to (Привязать к).
Зажав Shift можно выбрать несколько типов привязок.
Выбор нескольких привязок
Множественная привязка.
Привязав выделение к определенному вы можете отменить привязку не отпуская кнопку мыши, нажав А. Теперь можно выбрать несколько точек привязок. Выделение будет привязано к среднему значению всех выделенных точек. Отметив точку более одного раза придаст ей большей вес в усреднении.
Proportional Edit ( Пропорциональное Редактирование).
— Включено с режимом Connect Only.
— Включено с режимом Project from View.
Дополнительные настройки:
Круговой радиус пропорционального редактирования
В Объектном режиме (Object Mode) Пропорциональное Редактирование работает с целым объектом, а не с компонентами сетки (вершина, ребро, грань).
Проецирование по виду.
Ниже указаны типы Пропорционального редактирования. Они не требуют детального разбора.
Options в Object Mode.
При включении данной опции преобразует объектные данные, что может привести к непредсказуемым результатам.
Пример вращения в центре включен, справа выключен.
Пример масштабирования в центре включен, справа выключен.
Mirror и Auto Merge в Edit Mode.
Mirror (в Edit Mode) Если объект симметричный, то можно включить симметричное редактирование по X, Y,Z.
Object Type Visibility ().
Object Type Visibility
Во вкладке Видимость Типов объекта можно включить/отключить видимость или выбор объекта во вьюпорте.
Viewport Gizmos (Гизмы Вьюпорта):
Дополнительные настройки:
Objects Gizmos (Гизмо Объекта):
Empty (Пустышка):
Light (Свет):
Camera (Камера):
Viewport Overlays:
Дополнительные настройки:
Viewport Overlays в Object Mode (Наложения вьюпорта в Объектном Режиме)
Guides (Направляющие):
Objects:
Geometry:
Viewport Overlays в Object Mode (Наложения вьюпорта в Режиме Редактирования):
Mesh Edit Mode (Меш в Режиме Редактирования):
Shading (Шейдинг):
Measurement:
Normals:
FreeStyle:
— Режим Рентгена. Просвечивает Модель насквозь.
Viewport Shading (Шейдинг Вьюпорта).
Дополнительные настройки:
Дополнительные настройки Viewport Shading
Lighting (Освещение):
Выбор типа освещения
— Настройка освещения, установка пользовательского освещения.
— Фиксированное освещение (в режиме Studio)
Color (Цвет):
Background (Фон):
Options (Опции):
-View Name, Object Info, Playback FPS.
Toolbar (Панель инструментов).
Toolbar в Object Mode:
Маленький треугольник означает, что у инструмента есть дополнительные функции. Долгое нажатие на инструмент открывает дополнительные инструменты.
Select Tool (Инструменты Выделения):
— 3D Курсор.
Move, Rotate, Scale, Transform:
Annotate (Аннотации):
Measure (Измерить):
Инструмент Линейка позволяет измерять расстояния и углы с помощью перетаскивание линий.
Toolbar в Edit Mode:
Extrude (Выдавливание):
Loop Cut:
Knife:
Spin:
Smooth:
Slide:
Shrink/Fatten:
Shear:
Vertex/ Edge/ Faces (Вершины, Ребра, Грани):
Вершины, Ребра, Грани
Sidebar (Боковая панель).
Боковая панель с настройками объектов. Вызывается клавишей N.
Также в панели содержатся вкладки настроек аддонов.
Outliner (Структура проекта).
Схематическое представление структуры проекта.
Display Mode (Режим отображения).
Filter (Строка фильтрации):
Search (Поиск):
Filter:
— создание новой Коллекции.
Data-Blocks (Блок данных):
Collections (Коллекции).
В Blender объекты не являются частью сцены. Вместо этого все они хранятся в основной базе данных. Когда объекты хранятся в сцене они являются частью коллекции. Коллекции могут быть вложенными и отсортированы по усмотрению пользователя.
Схематическое представление коллекции.
Для создания Коллекции можно воспользоваться кнопкой в Оутлайнере, либо горячей клавишей M. Так же через хоткей можно переместить объект в другую Коллекцию.
Properties (Панель свойств).
Вкладки содержат различные настройки. Основной функционал Blender.
Вкладки:
Переключение между вкладками осуществляется ЛКМ. Если зажать ЛКМ на вкладке и тянуть вниз произойдет плавный скроллинг между вкладками.
ЛКМ на заголовке панели сворачивает и разворачивает его. Клавиша A так же сворачивает панель заголовка.
Сtrl + ЛКМ по определенно панели свернет все открытые, оставив одну эту единственной открытой.
Modifiers (Модификаторы).
Существует четыре типа модификаторов:
Status Bar (Строка состояния).
На этом обзор интерфейса подошел к концу. Список уроков по Blender вы можете найти на форуме.