Не секрет, что существуют альтернативные сборки Blender, в состав которых авторы включают свои доработки и функции.
Я писал о скрипте Demolition для разрушений в Blender, который разрабатывал Kai.
Теперь (18 февраля 2009г) Kai представил свою сборку Blender, в которую включил следующие доработки:
Модификатор Adaptive Subdivision - модификатор детализации при анимации (Подробности на http://blenderartists.org/forum/showthread.php?t=119216)
Demolition модификатор, основанный на Softbody - реализует возможность разрушения объектов в Blender. Основан на скрипте автора, но включает не все возможности скрипта. Документация отсутствует.
Дополнительные патчи, примененные в сборке:
Image Based Lighting - освещение, основанное на изображениях: диффузионная фильтрация (HDRI): подробнее...
Shaded ambient occlusion: подробнее...
Процедурная текстура для создания океана (aka Ocean Sim) - подробнее..
Для просмотра патчей понадобится зарегистрироваться на сайте проектов.
Есть интересная новость по теме Blender?
Хотите опубликовать статью или свою работу?
Ищите дизайнера?
Напишите мне на: lipkij@gmail.com
Подойдет - опубликую! Увидят многие :)
Напишите мне на: lipkij@gmail.com
Подойдет - опубликую! Увидят многие :)
пятница, 27 февраля 2009 г.
Сборка Blender от Kai Kostack.
Ярлыки:
Ресурсы Blender
Blender на CeBit 2009 - Гановер, Германия, 3-8 марта 2009 г

Blender будет представлен на CeBit 2009 в секторе Linux, представляющим открытое программное обеспечение. vissy просит оказать помощь и пожертвования для оформления стенда.
Информация о Blender на CeBit в журнале Linux Magazine (англ)(немецкий)
Информация о CeBit в журнале Linux Magazine (англ)
Обсуждения на форумах: BlenderArtist.org и Blend.polis
Нам все еще нужна ваша помощь! Это значит, что нам нужны "партизаны" для помощи в организации и работы несколько дней (у нас есть пока только один помощник - Филип! Он будет там весь день и каждый день презентации Blender (все средства сейчас направляются Филипу :) )
Мы также просим оказать пожертвования для помощи в оплате проживания, питания для помощников. Средства Blender Foundation ограничены поэтому любые финансовые вливания приветствуются.
Аккаунт на PayPal для пожертвований blender-cebit [ собака ] vizzy.de У нас также есть 500 пригласительных билетов, поэтому каждый кто нам поможет средствами или своими силами получит как минимум возможность бесплатного прохода на мероприятие.
Спасибо всем :) если вам нужно больше информации, дайте нам знать.
vizzy
CeBIT это событие мирового масштаба, где представляются технологии и решения в области IT и телекоммуникаций для дома и предприятий. Ключевая аудитория это пользователи из индустриального сектора, оптовые и розничные предприятия, торговые корпорации, банки, сервисные предприятия, правительственные агентства, ученые и все, кто имеет желание приобщиться к миру новых технологий.
CeBIT представляет международную платформу для обмена мнениями о новых течениях в индустрии, связи и презентации продуктов. Deutsche Messe AG организовывает CeBIT в Гановере каждую весну, начиная с 1986 года.
Источник:http://www.blendernation.com/2009/02/26/blender-at-cebit-2009-hannover-germany-march-3-8-2009/
Ярлыки:
Новости
четверг, 26 февраля 2009 г.
Каталог скриптов Blender. Продолжение
Продолжение перевода каталога скриптов Blender. Еще 5 скриптов.
AddMesh Octahedron
Внешний скрипт. Ссылка
http://wiki.blender.org/uploads/5/56/Scripts_manual_addmesh_octahedron_248.rar
Название файла скрипта: =add_mesh_octahedron_248.py
Краткое описание:
Скрипт создает mesh-объект октаэдр.

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Octahedron
Откроется меню скрипта:

Параметры:
width — ширина октаэдра
length — длина октаэдра
height — высота верхней вершины (вверх)
depth — высота нижней вершины (вниз)
AddMesh Paraboloid
Внешний скрипт. Ссылка на 2.48
http://wiki.blender.org/uploads/9/9a/Scripts_manual_addmesh_parabaloid_248.rar
Название файла: =add_mesh_parabaloid_248.py
Краткое описание:
Скрипт создает mesh-объект параболоид

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Paraboloid
Откроется меню скрипта:

Параметры:
segments — количество сегментов колец
rings — количество колец параболоида
height — высота параболоида
radius — радиус параболоида
AddMesh Pipe
Внешний скрипт. Ссылка (2.48)
http://wiki.blender.org/uploads/f/f2/Scripts_manual_addmesh_pipe_248.rar
Название файла скрипта: =add_mesh_pipe_248.py
Краткое описание:
Скрипт создает mesh-объект примитив трубы

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Pipe
Откроется меню скрипта:

Параметры:
inner radius — внутренний радиус
outer radius — внешний радиус
divisions — количество подразделений окружностей(разрешение)
height — высота трубы
height divisions — разрешение по высоте
Radial division — разрешение по толщине трубы (радиальное)
AddMesh Pyramid
Внешний скрипт. Ссылка (2.48)
http://wiki.blender.org/uploads/9/99/Scripts_manual_addmesh_pyramid_248.rar
Название файла скрипта: =add_mesh_pyramid_248.py
Краткое описание:
Скрипт создает mesh-объект пирамида.

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Pyramid
Откроется меню скрипта:

Параметры:
width -ширина основания пирамиды
length — длина основания пирамиды
height — высота пирамиды
AddMesh Spindle
Внешний скрипт. Ссылка (2.48)
http://wiki.blender.org/uploads/8/8e/Scripts_manual_addmesh_spindle_248.rar
Название файла скрипта: =add_mesh_spindle_248.py
Краткое описание:
Скрипт создает mesh-объект шпиндель — цилиндр с коническими вершинами.

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Spindle
Откроется меню скрипта:

Параметры:
Segments — разрешение (количество сегментов цилиндра)
Radius — радиус цилиндра шпинделя
Height — высота цилиндрической части
Cap Height — высота конических вершин.
Продолжение следует...
AddMesh Octahedron
Внешний скрипт. Ссылка
http://wiki.blender.org/uploads/5/56/Scripts_manual_addmesh_octahedron_248.rar
Название файла скрипта: =add_mesh_octahedron_248.py
Краткое описание:
Скрипт создает mesh-объект октаэдр.

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Octahedron
Откроется меню скрипта:

Параметры:
width — ширина октаэдра
length — длина октаэдра
height — высота верхней вершины (вверх)
depth — высота нижней вершины (вниз)
AddMesh Paraboloid
Внешний скрипт. Ссылка на 2.48
http://wiki.blender.org/uploads/9/9a/Scripts_manual_addmesh_parabaloid_248.rar
Название файла: =add_mesh_parabaloid_248.py
Краткое описание:
Скрипт создает mesh-объект параболоид

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Paraboloid
Откроется меню скрипта:

Параметры:
segments — количество сегментов колец
rings — количество колец параболоида
height — высота параболоида
radius — радиус параболоида
AddMesh Pipe
Внешний скрипт. Ссылка (2.48)
http://wiki.blender.org/uploads/f/f2/Scripts_manual_addmesh_pipe_248.rar
Название файла скрипта: =add_mesh_pipe_248.py
Краткое описание:
Скрипт создает mesh-объект примитив трубы

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Pipe
Откроется меню скрипта:

Параметры:
inner radius — внутренний радиус
outer radius — внешний радиус
divisions — количество подразделений окружностей(разрешение)
height — высота трубы
height divisions — разрешение по высоте
Radial division — разрешение по толщине трубы (радиальное)
AddMesh Pyramid
Внешний скрипт. Ссылка (2.48)
http://wiki.blender.org/uploads/9/99/Scripts_manual_addmesh_pyramid_248.rar
Название файла скрипта: =add_mesh_pyramid_248.py
Краткое описание:
Скрипт создает mesh-объект пирамида.

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Pyramid
Откроется меню скрипта:

Параметры:
width -ширина основания пирамиды
length — длина основания пирамиды
height — высота пирамиды
AddMesh Spindle
Внешний скрипт. Ссылка (2.48)
http://wiki.blender.org/uploads/8/8e/Scripts_manual_addmesh_spindle_248.rar
Название файла скрипта: =add_mesh_spindle_248.py
Краткое описание:
Скрипт создает mesh-объект шпиндель — цилиндр с коническими вершинами.

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Spindle
Откроется меню скрипта:

Параметры:
Segments — разрешение (количество сегментов цилиндра)
Radius — радиус цилиндра шпинделя
Height — высота цилиндрической части
Cap Height — высота конических вершин.
Продолжение следует...
Ярлыки:
Blender - Python,
Мои статьи,
Ресурсы Blender
Серия занятий на Blenducation с Jonathan Williamson!

Jonathan Williamson (Mr. Bomb/shadowdragon) из студии Montage Studio будет проводить 3 занятия по моделированию, каждое занятие будет длиться 3 часа, проводиться они будут на Blenducation. Певрое занятие начинается 28 февраля. Каждое занятие стоит $20.
Будет раскрыто множество тем, включая:
* Clothes - моделирование одежды
* Modeling - приемы моделирования
* Materials - материалы
* References - ссылки
* Weapons - оружие
Источник: http://www.blendernation.com/2009/02/26/blenducation-series-with-9-hours-of-jonathan-williamson/
Ярлыки:
Новости
Анимация робота H7

Студия RBGProd Studios из Швейцарии только что закончила детальную анимацию для компании Humord (вэбсайт). Анимация создавалась на основе реальной съемки и композинга с ней анимированного робота (названного H7).
Oliver Amrein написал:
"Проект начался в прошлом году с раскадровки и первый черновой вариант робота H7 был показан клиентам в июне. Сьемки фабрики мы делали летом с помощью HD-камер.
В октябре, я участвовал в углубленных лекциях по Blender в Амстердаме, где я получил ценные советы от Bassam по риггингу и от Andy по освещению и компоузингу. Это было наподобие смешанного занятия и одновременно семинара, где вы могли работать над персональными проектами и получать ответы на свои вопросы и другую помощь. Я бы очень рекомендовал всем поучаствовать на этих занятиях в следующий раз :)
Плюс в качестве бонуса у вас есть шанс встретиться с известными людьми, такими как например Francesco Siddi, которого мы пригласили затем в Швейцарию помочь на последних неделях - самых тяжелых"
Pablo Vasquez также помог команде с анимацией робота H7, оптимизируя файлы и давая множество советов по компоузингу. Он также сообщил нам, что ему очень понравилось угощение фондю из знаменитого Швейцарского сыра. :)
Часть компоузинга и анимации была сделана с помощью Blender, однако также использовался After Effects, для маскирования и вращения объектов и людей вокруг робота. Также использовалась программа Syntheyes а эффект прозрачности был сделан с помощью плагина displacement в After Effects. Видео было закончено в декабре 2008, но только недавно у всех появилась возможность посмотреть его.
Источник:http://www.blendernation.com/2009/02/25/h7-robot-animation/
Ярлыки:
Новости
среда, 25 февраля 2009 г.
Начало курса по Blender в Нижегородском Техническом Колледже
Вчера в ижегородском Техническом Колледже прошел первый семинар по Blender для преподавателей, сотрудников Вычислительного Центра и студентов.
Программа семинаров расчитана на 40 академических часов.
В ходе курса участники освоят моделирование в Blender, методы и приемы анимации, текстурирования, композитинга и всего что может понадобиться начинающему моделеру.
Как оказалось, Blender интересен не только преподавателям по компьютерной графике и связанных с графикой дисциплин. Некоторые из преподавателей высказали идеи об использовании Blender в курсе Физики и Математики.
Как мне (gumanoed) стало известно, на одной из выставок IT в образовании была представлена интерактивная модель из курса школьной физики.
Blender идет в массы!
P.s. Курс ведет Михаил Солуянов.
Источник: http://blenderteam.net/community/showthread.php?t=326
Ярлыки:
Новости Blender из России
Опрос сообщества CG

Опрос Сообщества CG на сайте CGenie показал показал очень интересные результаты относительно Blender и его сравнения с другими 3D пакетами и сообществами.
Опрос показал статистику ответов 2022 опрошенных по следующим популярным 3D программам:
* Blender
* 3Ds Max
* Maya
* Houdini
* XSI
* Cinema4D
* Modo
* Lightwave
Результаты достаточно интересны! Всю статью можно посмотреть на этой странице.
Источник: http://www.blendernation.com/2009/02/24/cg-community-survey/
Ярлыки:
Новости
вторник, 24 февраля 2009 г.
Google Даун-тайм
Причину сего пока не называют....
http://www.openspace.ru/news/details/8196/
так что почту я пока смотреть не могу :)
15.30.. Гуглмэйл ожил и заработал
http://www.openspace.ru/news/details/8196/
так что почту я пока смотреть не могу :)
15.30.. Гуглмэйл ожил и заработал
Ярлыки:
Новости
Обновление проекта Blender 2.5!

Тон Роозендааль сообщает: для занятых пользователей, у которых нет времени читать все логи и море страниц на wiki представлены суммарные результаты прогресса разработки!
от переводчика: это действительно стоит увидеть!
Источник: http://www.blendernation.com/2009/02/23/blender-25-project-update/
Ярлыки:
Новости
Соревнование по системе частиц - проголосуйте сейчас!

Две недели назад я посещал мой первый урок на Blenducation, проводимый лично Дэвидом Хиксоном (Dipingo). Занятие стоило 5$ и тема была система частиц для создания волос (а также полезные инструменты, такие как окраска текстур, анимирование волос и софт-боди, основы UV-мэппинга и т.д.)
В конце занятия Dipingo предложил такую идею: Мы проведем соревнование по анимации системы частиц волос! Итак, он дал нам две недели для выполнения наших работ, они уже прошли и настало время голосования, о чем я вас и прошу!
Соревнование проводилось только для тех, кто присутствовал на занятии. Стыдно, но я не успел сделать работу и отослать ее. :( Хорошо, вы меня не простите, но прошу вас - поучаствуйте в голосовании на Blenducation!
Вы можете заказать запись занятия за $5 здесь
Источник: http://www.blendernation.com/2009/02/23/blenducation-particle-hair-contest-vote-now/
Ярлыки:
Новости
понедельник, 23 февраля 2009 г.
Конкурс завершен: Восстание машин.
Конкурс этой недели завершен!
О следующих конкурсах я извещу вас отдельно, потому что есть определенные задумки по-поводу...
А пока начинается неделя голосований!
Прислано две работы и это будет трудное голосование, потому как одна модель создавалась для игры, в то время как другая - для анимации. Тяжело сравнивать, но я думаю мы придем к хорошему итогу :)
Итак, прислано две работы:
1. Работа 1 - Николай Карполь прислал модель робота, которую он создавал для одной игры.

2. Работа 2 - прислал Илья Калягин.
Он написал в своем письме:
"Это кадр из небольшого ролика, которому увы так и не довелось выйти в свет.
Модельке уже около года, я тогда только начинал работать в блендере. Спецально решил ничего не менять, иначе переделал бы все сначала и не успел в срок:) так что не судите строго:)
Да, кстати, его зовут Kif-345:)"


Это и правда трудно - оценивать..
Тем не менее, опрос ждет вашего голоса!
О следующих конкурсах я извещу вас отдельно, потому что есть определенные задумки по-поводу...
А пока начинается неделя голосований!
Прислано две работы и это будет трудное голосование, потому как одна модель создавалась для игры, в то время как другая - для анимации. Тяжело сравнивать, но я думаю мы придем к хорошему итогу :)
Итак, прислано две работы:
1. Работа 1 - Николай Карполь прислал модель робота, которую он создавал для одной игры.

2. Работа 2 - прислал Илья Калягин.
Он написал в своем письме:
"Это кадр из небольшого ролика, которому увы так и не довелось выйти в свет.
Модельке уже около года, я тогда только начинал работать в блендере. Спецально решил ничего не менять, иначе переделал бы все сначала и не успел в срок:) так что не судите строго:)
Да, кстати, его зовут Kif-345:)"


Это и правда трудно - оценивать..
Тем не менее, опрос ждет вашего голоса!
Ярлыки:
Конкурсы и соревнования
Каталог скриптов Blender
Я также начал перевод документации по скриптам из каталога Blender. Позже вся документация будет оформлена в виде PDF и выложена в библиотеке.
Вот первые 5 скриптов (не включая встроенные):
AddMesh Circular_Stairway
Внешний скрипт. Ссылка (2.48) http://wiki.blender.org/uploads/0/0a/Scripts_manual_addmesh_circularstairway_248a.rar
Название файла скрипта: =add_mesh_circular_stairway_248.py
Краткое описание:
Добавляет Mesh-объект Circular Stairway — Пирамиду(набор) колец(дисков)

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Circular_stairway
Откроется меню скрипта

Параметры
Segments — количество сегментов кольца
Minor radius — наименьший радиус
Major radius — наибольший радиус
Height — высота пирамиды
Steps — количество колец пирамиды
AddMesh Diamond
Внешний скрипт. Ссылка (2.48) http://wiki.blender.org/uploads/2/2e/Scripts_manual_addmesh_diamond_248a.rar
Название файла скрипта: =add_mesh_diamond _248a.py
Краткое описание:
Добавляет Mesh-объект «брильянт»

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Diamond
Откроется меню скрипта:

Параметры:
Segments — количество сегментов брильянта
Girdle Radius — радиус пояса
Table Radius — радиус верхней площадки
Crown Height — высота верхней части брильянта (от пояса до верха)
Pavillion Height — высота нижней части брильянта (от пояса до низа)
AddMesh Gear
Внешний скрипт. Ссылка (2.48)
http://wiki.blender.org/uploads/b/b3/Scripts_manual_addmesh_gears_248.rar
Название файла скрипта: =add_mesh_gears_248.py
Краткое описание:
Скрипт создает Mesh-объект примитив Шестеренки.

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Gear
Откроется меню скрипта:

Параметры:
Number of Teeth — количество зубов шестеренки
Radius — радиус шестерни от центра до начала верхней части зуба. Может быть отрицательный
Addendum — высота верхней части зуба
Dedendum — высота нижней части зуба
Base — базовая толщина кольца шестеренки (от радиуса к центру)
Pressure Angle — угол среза зуба шестерни (на рисунке пример для углов 0, 20 и 45 градусов)

Width — толщина шестеренки, поделенная на 2 (толщина половины шестерни)
Helical Angle — угол поворота зубов (зубцы растягиваются соответственно)
Conical Angle — конический угол — угол наклона конической шестерни
Rack — создать только один экземпляр зубца
Crown — смещение зубцов под углом для создания коронки
Teeth per Spoke — отношение зубцы/списы (каждые N зубцов будет спица)
Spoke Bevel — высота, подьем спицы
Spoke Width — ширина площадки зуба спицы
Spoke Length — с этим параметром я не разобрался, так как он видимо не влиял
Spoke Resolution — разрешение спицы, количество полигонов спицы
AddMesh Hyperboloid
Внешний скрипт. Ссылка (2.48)
http://wiki.blender.org/uploads/f/f1/Scripts_manual_addmesh_hyperboloid_248.rar
Название файла скрипта: =add_mesh_hyperboloid_248.py
Краткое описание:
Создает Mesh-объект гиперболоид

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Hyperboloid
Откроется меню скрипта:

Параметры скрипта:
Centre — воздействие на радиус центра
Resolution — разрешение, количество вершин кольца
Rings — количество колец с каждой стороны
AddMesh Ladder
Внешний скрипт. Ссылка (2.48)
http://wiki.blender.org/uploads/0/0f/Scripts_manual_addmesh_ladder_248.rar
Название файла скрипта: =add_mesh_ladder_248.py
Для работы скрипта нужен скрипт mesh_cube_wire.py
Ссылка http://www.atzibala.com/blender/cube_wire/mesh_cube_wire.py
Краткое описание:
Скрипт создает Mesh-объект простой (пожарной) лестницы

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Ladder
Откроется меню скрипта:

Параметры:
Total height — длина лестницы
Width — ширина лестницы
Height — пролет ступенек
Depth — параметр длины конечных отрезков лестницы (для прикрепления к стене например)
Thick — толщина профиля лестницы
Источник: http://wiki.blender.org/index.php/Extensions:Py/Scripts/Catalog
Вот первые 5 скриптов (не включая встроенные):
AddMesh Circular_Stairway
Внешний скрипт. Ссылка (2.48) http://wiki.blender.org/uploads/0/0a/Scripts_manual_addmesh_circularstairway_248a.rar
Название файла скрипта: =add_mesh_circular_stairway_248.py
Краткое описание:
Добавляет Mesh-объект Circular Stairway — Пирамиду(набор) колец(дисков)

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Circular_stairway
Откроется меню скрипта

Параметры
Segments — количество сегментов кольца
Minor radius — наименьший радиус
Major radius — наибольший радиус
Height — высота пирамиды
Steps — количество колец пирамиды
AddMesh Diamond
Внешний скрипт. Ссылка (2.48) http://wiki.blender.org/uploads/2/2e/Scripts_manual_addmesh_diamond_248a.rar
Название файла скрипта: =add_mesh_diamond _248a.py
Краткое описание:
Добавляет Mesh-объект «брильянт»

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Diamond
Откроется меню скрипта:

Параметры:
Segments — количество сегментов брильянта
Girdle Radius — радиус пояса
Table Radius — радиус верхней площадки
Crown Height — высота верхней части брильянта (от пояса до верха)
Pavillion Height — высота нижней части брильянта (от пояса до низа)
AddMesh Gear
Внешний скрипт. Ссылка (2.48)
http://wiki.blender.org/uploads/b/b3/Scripts_manual_addmesh_gears_248.rar
Название файла скрипта: =add_mesh_gears_248.py
Краткое описание:
Скрипт создает Mesh-объект примитив Шестеренки.

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Gear
Откроется меню скрипта:

Параметры:
Number of Teeth — количество зубов шестеренки
Radius — радиус шестерни от центра до начала верхней части зуба. Может быть отрицательный
Addendum — высота верхней части зуба
Dedendum — высота нижней части зуба
Base — базовая толщина кольца шестеренки (от радиуса к центру)
Pressure Angle — угол среза зуба шестерни (на рисунке пример для углов 0, 20 и 45 градусов)

Width — толщина шестеренки, поделенная на 2 (толщина половины шестерни)
Helical Angle — угол поворота зубов (зубцы растягиваются соответственно)
Conical Angle — конический угол — угол наклона конической шестерни
Rack — создать только один экземпляр зубца
Crown — смещение зубцов под углом для создания коронки
Teeth per Spoke — отношение зубцы/списы (каждые N зубцов будет спица)
Spoke Bevel — высота, подьем спицы
Spoke Width — ширина площадки зуба спицы
Spoke Length — с этим параметром я не разобрался, так как он видимо не влиял
Spoke Resolution — разрешение спицы, количество полигонов спицы
AddMesh Hyperboloid
Внешний скрипт. Ссылка (2.48)
http://wiki.blender.org/uploads/f/f1/Scripts_manual_addmesh_hyperboloid_248.rar
Название файла скрипта: =add_mesh_hyperboloid_248.py
Краткое описание:
Создает Mesh-объект гиперболоид

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Hyperboloid
Откроется меню скрипта:

Параметры скрипта:
Centre — воздействие на радиус центра
Resolution — разрешение, количество вершин кольца
Rings — количество колец с каждой стороны
AddMesh Ladder
Внешний скрипт. Ссылка (2.48)
http://wiki.blender.org/uploads/0/0f/Scripts_manual_addmesh_ladder_248.rar
Название файла скрипта: =add_mesh_ladder_248.py
Для работы скрипта нужен скрипт mesh_cube_wire.py
Ссылка http://www.atzibala.com/blender/cube_wire/mesh_cube_wire.py
Краткое описание:
Скрипт создает Mesh-объект простой (пожарной) лестницы

Инструкции:
Скрипт необходимо добавить в папку scripts
Нажмите Пробел
Пункт Add
Пункт Mesh
Пункт Ladder
Откроется меню скрипта:

Параметры:
Total height — длина лестницы
Width — ширина лестницы
Height — пролет ступенек
Depth — параметр длины конечных отрезков лестницы (для прикрепления к стене например)
Thick — толщина профиля лестницы
Источник: http://wiki.blender.org/index.php/Extensions:Py/Scripts/Catalog
Ярлыки:
Blender - Python,
Ресурсы Blender
С праздником всех защитников Отечества!

Поздравляю всех мужчин с праздником!
Ибо даже празднование оного приводит в трепет потенциального противника!
Ярлыки:
Новости Blender из России
воскресенье, 22 февраля 2009 г.
Анонс моей библиотеки
Я хочу объявить о создании моей небольшой библиотеки переводов, программ и т.д., которые сделал сам.
Разумеется, все материалы, которые я предоставляю, будут находится и в этом блоге. В библиотеке будут храниться оформленные материалы в виде PDF-файлов или другом виде. Единственное отличие - там будут храниться ссылки для скачивания этих подготовленных материалов с бесплатных хранилищь типа deposite, letitbit и других подобных. Надеюсь - это разумный компромисс и для вас и для меня. Если лень искать и копировать с блога - просто скачайте по ссылкам в библиотеке.
Еще раз повторяю - это лишь альтернативный вариант получения бесплатных материалов и возможность поощрения моей работы :) ну и средств для развития конечно же!
Если вы хотите поместить в библиотеке ссылку на свои материалы - пишите мне - без проблем! Только соблюдайте авторские права и лицензии, пожалуйста.
С Уважением
Разумеется, все материалы, которые я предоставляю, будут находится и в этом блоге. В библиотеке будут храниться оформленные материалы в виде PDF-файлов или другом виде. Единственное отличие - там будут храниться ссылки для скачивания этих подготовленных материалов с бесплатных хранилищь типа deposite, letitbit и других подобных. Надеюсь - это разумный компромисс и для вас и для меня. Если лень искать и копировать с блога - просто скачайте по ссылкам в библиотеке.
Еще раз повторяю - это лишь альтернативный вариант получения бесплатных материалов и возможность поощрения моей работы :) ну и средств для развития конечно же!
Если вы хотите поместить в библиотеке ссылку на свои материалы - пишите мне - без проблем! Только соблюдайте авторские права и лицензии, пожалуйста.
С Уважением
Ярлыки:
Новости
Беглый огонь!

Быстрый обзор Blender новостей.
Бесплатные модели от Fleşter Iulian
Модели для коммерческого и некоммерческого использования обновляются еженедельно
Bits of Blender
Мой партнер (и 9-летний сын Ричард) и я рады сообщить что заполучили уже 500 подписчиков на нашу серию видеороликов на YouTube "Bits of Blender". Наши 37 эпизодов просмотрены уже 60000 раз. Это может и немного для подобных вещей, но нам приятно делать что-нибудь для сообщества Blender как отец и сын.
С Уважением,
John R. Nyquist
Blender знаки от JacobMA
Sun Microsystems выпустила JavaFX 1.1, взгляните, в нижнем правом углу вы увидите картинку, которую уже кое-где встречали!!
Журнал "Animation World Magazine" отметил Big Buck Bunny в рубрике "Нужно посмотреть в 2009 году"
Источник: http://www.blendernation.com/2009/02/21/rapid-fire-6/
Ярлыки:
Новости
пятница, 20 февраля 2009 г.
Создание шрифтов для игр в Blender.
Неотьемлимой частью любой игры являются различные надписи, индикаторы и т.д., для создания которых вам понадобится файл с изображением шрифтов. Существует приложение ftblender, с помощью которого можно построить такой файл. Однако на него есть жалобы :) и некий ashsid из Братиславы (Словакия) попробовал решить эту проблему.
Он написал скрипт Bitmap font creator.
Вот перевод содержания:
Моей проблемой прошлой осенью стало создание bitmap шрифтов для GameBlender. Приложение ftblender не могло их построить правильно, шрифты перекрывали друг друга и разрешение их тоже оставляло желать лучшего.
Затем я обнаружил, что модуль Python Image Library (PIL) способен преобразовать символы в изображения, так я и начал альтернативную разработку для создания растровых шрифтов.Bitmap Font Creator - результат этой работы. Он выполняет генерацию растровых шрифтов из файлов TrueType Font шрифтов и позволяет настроить так, чтобы меш-объект в Blender автоматически использовал созданный шрифт.
Установка и использование
Скопируйте файл blendFont.py в папку скриптов Blender и скрипт появится в пункте Image меню скриптов. Для работы скрипта необходимо, чтобы был установлен модуль PIL в Python.

Описание опций:
* Font File - имя результирующего файла шрифтов (треубется указать расширение файла, я рекомендую использовать .png)
* Font size - размер получаемых шрифтов
* Font Folder - папка, где растровые шрифты будут сохранены
* TTF File - исходный файл шрифтов True Type Font файл (.TTF)
* Map File - определяет символы для верхней половины кодов ASCII (8-бит)(коды от 0×80 до 0xFF). Формат map-файлы: первый символ в каждой строке определяет код в растровом шрифте, остальная часть строки содержит 16-ричный код unicode символа, который будет испольщоваться. В архиве включен файл cp1250.txt, который содержит определения для символов Central Europian которые используются в Словакии и Чешской республике. Если map-файл не используется, то получаемый растровый файл шрифтов будет содержать только основные ASCII символы (диапазон 0×20 - 0×7F).
* Width - Ширина результирующего растрового изображения шрифтов. Высота расчитывается автоматически.
* Padding - дополнительные пиксели на каждой стороне каждого символа шрифта.
* Use basic characters - включает основной набор ASCII символов в шрифт - может быть отключена для языков, которые не используют их(Японский, Китайский, Арабский…).
* Setup selected object - Эта опция проверяет, если выбранные объекты являются мешами и содержат именно один квадрат. Если да, то инструмент установит сгенерированный растровый шрифт как текстуру для выбранного объекта и обновит UV-координаты объекта, режим текстур и добавит свойство Text объекту. После этого выбранный объект можно применять в игре!
* Base Char и Delimiter это “hardcore” параметры для генерации растровых шрифтов, для большинства шрифтов не понадобится их менять.
Файл шрифтов сгенерируется как только вы заполните все поля и нажмете кнопку Create Bitmap. Затем изображение шрифтов загружается в Blender и выбранные объекты настраиваются для использования этих шрифтов (если была включена опция)
Скачать Bitmap Font Creator
От переводчика:
Ну чтож, можно сказать - привет русский язык в играх? Прощай мучения с настройками?
Я еще не пробовал :)
Он написал скрипт Bitmap font creator.
Вот перевод содержания:
Моей проблемой прошлой осенью стало создание bitmap шрифтов для GameBlender. Приложение ftblender не могло их построить правильно, шрифты перекрывали друг друга и разрешение их тоже оставляло желать лучшего.
Затем я обнаружил, что модуль Python Image Library (PIL) способен преобразовать символы в изображения, так я и начал альтернативную разработку для создания растровых шрифтов.Bitmap Font Creator - результат этой работы. Он выполняет генерацию растровых шрифтов из файлов TrueType Font шрифтов и позволяет настроить так, чтобы меш-объект в Blender автоматически использовал созданный шрифт.
Установка и использование
Скопируйте файл blendFont.py в папку скриптов Blender и скрипт появится в пункте Image меню скриптов. Для работы скрипта необходимо, чтобы был установлен модуль PIL в Python.

Описание опций:
* Font File - имя результирующего файла шрифтов (треубется указать расширение файла, я рекомендую использовать .png)
* Font size - размер получаемых шрифтов
* Font Folder - папка, где растровые шрифты будут сохранены
* TTF File - исходный файл шрифтов True Type Font файл (.TTF)
* Map File - определяет символы для верхней половины кодов ASCII (8-бит)(коды от 0×80 до 0xFF). Формат map-файлы: первый символ в каждой строке определяет код в растровом шрифте, остальная часть строки содержит 16-ричный код unicode символа, который будет испольщоваться. В архиве включен файл cp1250.txt, который содержит определения для символов Central Europian которые используются в Словакии и Чешской республике. Если map-файл не используется, то получаемый растровый файл шрифтов будет содержать только основные ASCII символы (диапазон 0×20 - 0×7F).
* Width - Ширина результирующего растрового изображения шрифтов. Высота расчитывается автоматически.
* Padding - дополнительные пиксели на каждой стороне каждого символа шрифта.
* Use basic characters - включает основной набор ASCII символов в шрифт - может быть отключена для языков, которые не используют их(Японский, Китайский, Арабский…).
* Setup selected object - Эта опция проверяет, если выбранные объекты являются мешами и содержат именно один квадрат. Если да, то инструмент установит сгенерированный растровый шрифт как текстуру для выбранного объекта и обновит UV-координаты объекта, режим текстур и добавит свойство Text объекту. После этого выбранный объект можно применять в игре!
* Base Char и Delimiter это “hardcore” параметры для генерации растровых шрифтов, для большинства шрифтов не понадобится их менять.
Файл шрифтов сгенерируется как только вы заполните все поля и нажмете кнопку Create Bitmap. Затем изображение шрифтов загружается в Blender и выбранные объекты настраиваются для использования этих шрифтов (если была включена опция)
Скачать Bitmap Font Creator
От переводчика:
Ну чтож, можно сказать - привет русский язык в играх? Прощай мучения с настройками?
Я еще не пробовал :)
Ярлыки:
Blender - Python,
Ресурсы Blender
Семинар по Blender в Ванкувере 14 марта

Университет British Columbia Fisheries Centre гордится возможностью провести второй семинар по Blender в Ванкувере. Первый прошел в августе 2008 года и был хорошо оценен 24 участниками, которые провели весь день за изучением компьютерной графики и общаясь с другими артистами из GNWC-MDM и VFS.
Mike Pan написал:
Мы считаем, что первый семинар по Bledner в Ванкувере прошел отлично и хотим провести его в этом году!
Fisheries Centre сейчас работает совместно с GNWC-MDM над образовательной мини-игрой на основе Blender Game Engine. Семинар проводится для начинающих и продвинутых пользователей Blender, желающих лучше понять работу программы. Встреча также послужит для представления Blender местным пользователям и обмена идеями.
Также в Fisheries Centre есть летняя интернатура, открытая для работы над этим игровым проектом и поэтому ищутся талантливые люди в этой области для участия.
Дополнительная информация и регистрация (бесплатная)
Источник: http://www.blendernation.com/2009/02/19/blender-workshop-in-vancouver-march-14/
Ярлыки:
Новости
Параметры fluid, softbody и т.д.

Очень трудно порой наугад "играться" с параметрами симуляции жидкости или soft-body. И в этом поможет вам разобраться наш итальянский товарищ Antonio Gessi:) на английском правда языке. На своем сайте он постарался тщательно разобраться с этими настройками и представил флэш-ролики с результатами.
Ссылка на сайт
Ярлыки:
Ресурсы Blender
четверг, 19 февраля 2009 г.
Инженерные видеоролики

Ранее мы писали о команде Blender-пользователей, которые специализируются на создании инженерных анимаций и иллюстраций. Их последняя работа была представлена на сайте компании в качестве основных визуализаций.
Компания поставляет профессиональное инженерное оборудование и запчасти по всей Европе.
На сайте есть множество различных секций, в каждой - серия изображений, а главное видео с анимацией сделано командной. Посмотреть можно здесь

Источник: http://www.blendernation.com/2009/02/19/engineering-videos/
Ярлыки:
Новости
среда, 18 февраля 2009 г.
Презентация продукции - гидравлический лифт.

С помощью Blender, Ymer, работающий в компании QUIRI Hydromécanique, расположенной во Франции создал презентацию работы гидравлического лифта.
"Анимация и композинг были сделаны в Blender, я лишь использовал Inkscape 0.46 для подготовки текстовой части перед композитингом, для обработки изображений использовался GIMP 2.6. Вся работа была сделана на машине с ОС Ubuntu так как моей целью было создание видеопрезентации только с использованием открытого и бесплатного программного обеспечения, особенно Blender, он мой любимчик :) !"
Видео по ссылке
Видео без звука.
Источник: http://www.blendernation.com/2009/02/18/product-illustration-of-a-hydrualic-lift/
Ярлыки:
Новости
вторник, 17 февраля 2009 г.
Поиск специалиста по Blender и Crystal Space
В одном из комментариев ко мне обратились с просьбой о поиске специалиста или группы специалистов по Blender и Crystal Space. Просьба из-за рубежа, вот перевод:
Требуется эксперт в разработке игр.
Студия Albertinaplatz Creative Studio (Австрия\Вена) опубликовала исторический комикс "Ричард Львиное Сердце. Ненасытная жадность". Теперь комикс должен послужить основой для компьютерной 3D игры с использованием Blender 3D и Crystal Space. Основанная на линии сюжета комикса и жизни Элеоноры Аквитанской и ее знаменитого сына Ричарда Львиное Сердце студия Albertinaplatz Creative Studio хочет разработать как образовательную игру так и просто развлекательную игру.
Вот почему мы ищем специалиста или группу специалистов, знакомых с разработкой игр (концепция, дизайн, ...)
Интерес к интерактивным играм, инновациям в области разработки игр, также как и креативность и внесение собственных идей в этот проект будет учитываться при рассмотрении вашего резюме. С вами будет заключен контракт. Так как это европейский проект, то мы принимаем резюме из любой точки Европы.
Если вам интересно и вы хотите стать частью этого творческого проекта по разработке концепции для этой игры и поддержки в реализации идей, отправьте Вашу заявку (биографические данные и, возможно, примерами из ваших предыдущих работ и проектов в которых Вы принимали участие) по адресу:
Anne Gutmann
Albertinaplatz Creative Studio
anne@abc.at
Maysedergasse 2/17
1010 Vienna
+43 (0)1 512 88 77 14
+43 (0)1 512 88 77 19
Требуется эксперт в разработке игр.
Студия Albertinaplatz Creative Studio (Австрия\Вена) опубликовала исторический комикс "Ричард Львиное Сердце. Ненасытная жадность". Теперь комикс должен послужить основой для компьютерной 3D игры с использованием Blender 3D и Crystal Space. Основанная на линии сюжета комикса и жизни Элеоноры Аквитанской и ее знаменитого сына Ричарда Львиное Сердце студия Albertinaplatz Creative Studio хочет разработать как образовательную игру так и просто развлекательную игру.
Вот почему мы ищем специалиста или группу специалистов, знакомых с разработкой игр (концепция, дизайн, ...)
Интерес к интерактивным играм, инновациям в области разработки игр, также как и креативность и внесение собственных идей в этот проект будет учитываться при рассмотрении вашего резюме. С вами будет заключен контракт. Так как это европейский проект, то мы принимаем резюме из любой точки Европы.
Если вам интересно и вы хотите стать частью этого творческого проекта по разработке концепции для этой игры и поддержки в реализации идей, отправьте Вашу заявку (биографические данные и, возможно, примерами из ваших предыдущих работ и проектов в которых Вы принимали участие) по адресу:
Anne Gutmann
Albertinaplatz Creative Studio
anne@abc.at
Maysedergasse 2/17
1010 Vienna
+43 (0)1 512 88 77 14
+43 (0)1 512 88 77 19
Ярлыки:
Новости,
Работа для дизайнеров
Говорильня BlenderTech
Я создал группу обсуждений - что то вроде форума. Может быть так будет удобнее, чем обсуждать что-либо в комментариях.
Панель перехода справа вверху.
Панель перехода справа вверху.
Ярлыки:
Новости
понедельник, 16 февраля 2009 г.
Итоги конкурса прошлой недели. Работа Андрея Королёва
Опрос закрыт, как видно работа Андрея многим из вас понравилась. Четыре человека указали, что они могут сделать лучше - жаль что они не принимали участие, но это и понятно, не у всех есть достаточно свободного времени или желания.
По словам Андрея - он вообще первый раз пытался смоделировать человеческий бюст, да еще и похожий на реального человека (Арнольд Шварцнеггер) - поэтому его работа действительно отличная!
Blend - файл, присланный Андреем вы можете скачать отсюда(5.5 Мб).
Если кто-нибудь сможет улучшить ее, присылайте свои результаты!
По словам Андрея - он вообще первый раз пытался смоделировать человеческий бюст, да еще и похожий на реального человека (Арнольд Шварцнеггер) - поэтому его работа действительно отличная!
Blend - файл, присланный Андреем вы можете скачать отсюда(5.5 Мб).
Если кто-нибудь сможет улучшить ее, присылайте свои результаты!
Ярлыки:
Конкурсы и соревнования
Тесты процессоров Intel и AMD

Если вы собираетесь приобретать новый компьютер, вас заинтересует просмотр результатов тестов скорости процессоров, проведенных Anandtech на Intel и AMD чипсетах. Для сравнения использовалась работа в Blender 2.48a.
Источник: http://www.blendernation.com/2009/02/15/cpu-speed-tests-for-intel-and-amd-cores/
Ярлыки:
Новости
Ярлыки:
Новости
суббота, 14 февраля 2009 г.
Конкурс следующей недели. Восстание машин!
Тема конкурсов в блоге пока жива и от Вашего участия зависит ее дальнейшее существование. Может быть конкурсов и так достаточно в сети, может задания слишком трудозатратные, а может просто это просто не интересно. А то, что не интересно не стоит устраивать и тратить на это время.
А потому я хочу провести еще один конкурс, который и ответит на мой вопрос - нужны ли вообще эти конкурсы?
Тема проста и не ограничивает вас никак, ни похожестью на что-либо, ничем практически - только ваша креативность.
Итак, тема конкурса - РОБОТЫ. Не важно, что это будет - стальной гигант с грозными базуками или оживший тостер гусеничный - аля Walle. Правило одно - это должна быть робототехника :) Кому-то покажется - тема заезженная, но что делать - нет ничего проще чем собрать робота в 3D, и чаще всего это то, что новички стараются смоделировать при первом знакомстве с программой моделирования.
Работы присылайте на lipkij@gmail.com
Итак, конкурс объявлен, Ваши работы принимаются до 22 февраля 23.59.
Желаю всем хорошо отдохнуть на этих выходных!
А потому я хочу провести еще один конкурс, который и ответит на мой вопрос - нужны ли вообще эти конкурсы?
Тема проста и не ограничивает вас никак, ни похожестью на что-либо, ничем практически - только ваша креативность.
Итак, тема конкурса - РОБОТЫ. Не важно, что это будет - стальной гигант с грозными базуками или оживший тостер гусеничный - аля Walle. Правило одно - это должна быть робототехника :) Кому-то покажется - тема заезженная, но что делать - нет ничего проще чем собрать робота в 3D, и чаще всего это то, что новички стараются смоделировать при первом знакомстве с программой моделирования.
Работы присылайте на lipkij@gmail.com
Итак, конкурс объявлен, Ваши работы принимаются до 22 февраля 23.59.
Желаю всем хорошо отдохнуть на этих выходных!
Ярлыки:
Конкурсы и соревнования
Blender GE - "разборки" с мышью :)
Часто на форумах спрашивают, как работать с мышкой в GE?
Я нашел отличный урок, в котором автор (Andrew-101 из Австралии (Мельбурн)) популярно рассказал об этом и дал пример файла.
Если вы серьезно решили делать игру или просто хотите пропробовать свои силы в мини-игре, вам понадобится разобраться с использованием мыши.
В этом уроке я расскажу как использовать мышь в GE, получать информацию с нее и затем использовать эту информацию. В примере есть 8 сцен которые помогут вам разобраться с этим досконально, а именно:
* Как отобразить курсор мыши в GE.
* Как получить координаты курсора мыши
* Как получить координаты курсора мыши относительно центра экрана
* Перемещение камеры за курсором
* Перемещение объекта с помощью мыши
* Мгновенно переместить объект в точку экрана где вы кликнули мышкой
* Плавно переместить объект в точку нажатия мышки
* Заставить объект появится в месте нажатия мышки и передвигать эти объекты
Для начала необходимо иметь некоторые навыки Python в GE.
The Mouse Sensors
Давайте посмотрим, какие виды сенсора мыши (Mouse) предоставляет нам Blender. Их 8 - вот они:
* Left Button - Левая кнопка
* Middle Button - Средняя кнопка
* Right Button - Правая кнопка
* Wheel Up - Колесико вверх
* Wheel Down - Колесико вниз
* Movement - Перемещение
* Mouse Over - Перемещение над..
* Mouse Over Any - Перемещение над любым объектом
Первые 5 сенсоров - ничего особенного, с их помощью мы работаем с кнопками мыши, а вот с последними 3-мя стоит разобраться.
Сенсор Movement имеет две функции, использование которых поможет нам реализовать некоторые функции - эти функции .getXPosition() и .getYPosition(). Каждая из этих функций возвращает целое число, это X и Y координаты курсора мыши.
Сенсор Mouseover тоже полезен, с помощью функции isPositive() мы получаем булево значение Истина (true) если курсор мыши находится над владельцем сенсора (объект, к которому вы прикрепили сенсор). Сенсор Mouseover также имеет две функции .getXPosition() и .getYPosition() для получения координат (и множество других), однако мы будем использовать функцию .getHitPosition(). Эта функция возвращает список из x,y и z координат над которыми находится мышь.
Сенсор MouseOverAny похож на предыдущий, за исключением того, что срабатывает не только при перемещении мыши над владельцем сенсора, но и над любым другим объектом.
"Проявляем" курсор мышки в GE
Если вы планируете использовать мышь в GE тогда нам для начала надо отобразить сам курсор мышки.
Для этого нам понадобятся лишь две строчки кода:
import Rasterizer
Rasterizer.showMouse(1)
Первая строка - import Rasterizer - импортирует модуль Rasterizer. Этот модуль управляет экраном в GE, вы можете использовать строчку 'print dir(Rasterizer)', чтобы посмотреть на все функции, которые есть в этом модуле. Вторая строка 'Rasterizer.showMouse(1)' вызывает функцию '.showMouse()' из модуля с параметром 1 (1 - это также True в в python, 0 - False соответственно), говорящая что Rasterizer должен показать мышь. Если мышь не нужна - надо использовать '.showMouse(0)' или '.showMouse(False).
Получаем координаты курсора мыши.
Как их получить? В файле примера для этого откройте сцену 2 и скрипт example02. Кликните на пустышке с именем ('Control2') и в окне Logic посмотрите скрипт контроллера. Для получения координат используются две функции:
mouse_x = mouse.getXPosition()
mouse_y = mouse.getYPosition()
Координаты даются относительно верхнего левого угла.
Это очень просто, не правда ли?
Получение координат курсора относительно центра экрана.
В прошлом примере мы быстро получили координаты курсора, но начало координат находилось в левом верхнем углу. А если мы хотим чтобы начало было в центре экрана? В файле примера выбираем сцену 3, запускаем GE, останавливаем и смотрим вывод консоли - там уже то, что нам нужно. Как это сделать?
Сделать это можно с помощью 4-ех строчек кода:
window_width = Rasterizer.getWindowWidth()
window_height = Rasterizer.getWindowHeight()
mouse_x = mouse.getXPosition() - window_width/2
mouse_y = mouse.getYPosition() - window_height/2
Появились две новые переменные - window_width и window_height, и как вы догадываетесь они нужны, чтобы получить ширину и высоту экрана с помощью функций модуля Rasterizer. Получение значений для наших двух старых переменных mouse_x и mouse_y немного изменились. Чтобы объяснить, посмотрим на диграмму.

На этой диаграмме начало координат находится в левом верхнем углу, а как нам получить середину окна?
Найдем центр -Точка (320,240) ,она может быть получена так:
(Rasterizer.getWindowWidth() / 2, Rasterizer.getWindowHeight() / 2)
Если мы хотим теперь использовать эту точку как начало координат, то должны из координат вычисляемых точек отнимать координату центра окна (320,240).
то есть.
(120 - 320 , 65 - 240) = (-200, -175)
(320 - 320, 240 - 240) = (0, 0)

Надеюсь теперь понятно, почему для получения координат относительно центра мы проделывали эту процедуру.
Перемещение камеры за мышкой
Во многих случаях вам понадобится знать как вращать камеру с помощью мыши. В файле примера выбираем сцену и смотрим скрипт Example04. Чтобы посмотреть как это работает нажимаем P.
Давайте посмотрим на код. Он достаточно прост, за исключением некоторых новшеств:
mouse_x = float(mouse.getXPosition() - window_width/2)
mouse_y = float(mouse.getYPosition() - window_height/2)
Теперь мы преобразовываем результат координат в число с плавающей точкой. Зачем это понадобилось? Причину находим в следующей строке:
motion.setDRot(mouse_y/500, 0, -mouse_x/500, 0)
Этот код использует актуатор движения, прикрепленный к камере и устанавливающий вращение по оси X - делим значение координаты курсора по оси Y на 500, координату Y делаем 0-вой, а Z получаем с помощью деления X координаты курсора на 500 (если делить на 200 или 100 то вращение будет более быстрое и чувствительное).
Зачем я применял float к координатам мыши? Потому что если мы поделим целое число 40 на 500 то получим 0 а когда число с плавающей точкой то 40/500=0.08.
GameLogic.addActiveActuator(motion, 1)
Если вы не знаете зачем нужна эта строка кода, следует подучить python в GE, с его помощью мы активируем наш актуатор с установленным значением поворота камеры.
Rasterizer.setMousePosition(window_width/2,window_height/2)
Эта строка устанавливает положение курсора мыши снова в центр экрана.
Перемещаем объект с помощью мыши.
Перейдем к более интересным примерам, выбираем сцену 5 файла и смотрим скрипт Example05. Если нажмете P и запустите GE, то сможите кликом и ужерживанием на кубе перетаскивать его.
Давайте посмотрим как это сделано. Ранее я упоминал о функции getHPosition для сенсора mouseover. Мы используем эту функцию в этом примере. Функция .getHPosition() возвращает x,y и z положения над которыми находится мышь - представьте луч, который посылается из курсора мыши пока на столкнется с объектом. Так вот с помощью этой функции мы можем установить положение куба в положение курсора мыши, правильно? НЕТ!
Вспомните, что когда мышь пересекает объект , то это совсем не центр объекта, но мы делаем его центром устанавливая положение объекта в нужную точку. В этом случае наш куб будет сдвигаться в сторону камеры. Попробуйте изменить строчку:
own.setPosition([hit_pos[0], 0, hit_pos[2]])
на:
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, чтобы объект не наезжал на камеру).
Мгновенное перемещение объекта к точке нажатия мыши
Если вы видели из прошлого примера, когда вы очень быстро перемещаете курсор то куб как бы "отваливается". Это происходит если курсор за время одного "тика" перемещается на расстояние большее размеров куба и сенсор MouseOver перестает срабатывать. Давайте посмотрим как нам это исправить. Вы знаете что делать - выбираем следующую сцену, следующий скрипт. Теперь мы используем mouseoverany сенсор и плоскость за кубом(вы может и не заметили ее сразу - повращайте вид на 180 градусов).
Теперь мы используем сенсор 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)
Что он делает? Представим, что экран поделен на 4 части - квадранты:

Теперь представим, что центр - это положение коробки-куба. Все что делает этот метод это следит за положением пустышки (а пустышка реально находится там, где мы щелкаем мышкой) по отношению к кубу и определяет в каком квадранте она находится - 1,2,3 или 4. И когда X-координата мышки больше чем X куба и Y пустышки больше чем Y куба, то значит пустышка находится в первом квадранте, правильно? Просто посмотрите на код:
if own_pos[0] >= cube_pos[0]:
if own_pos[2] >= cube_pos[2]:
quadrant = 1
Когда метод нашел в каком квадранте находится пустышка (нажат курсор) он возвращает информацию:
return(quadrant)
Следующая функция, которую мы рассмотрим это getAngle(). Этот метод даст нам значение угла, образованного координатами куба и пустышки.
Вот код:
x = cube_pos[0]
z = own_pos[2]
pivot.setPosition([x, 0, z])
Диаграмма поможет нам лучше понять, что происходит.

Как вы видите из диаграммы, мы берем за точку pivot (центр) для вычисления угла координату X куба и координату Z пустышки, чтобы сформировать правильный прямоугольный треугольник. И надеюсь вы знаете что такое прямоугольный треугольник ;). Давайте посмотрим на вторую строку в коде:
from math import atan, degrees
Мы импортируем из модуля math нужные нам atan и degress. Degress преобразует радианы в градусы а atan нужен для нахождения угла из значения тангенса. Давайте посмотрим на наш треугольник.

The lengths of the opposite and adjacent sides can be found be getting the distance from the cube and empty to the pivot, which is what these two lines are doing:
Длину катетов мы можем найти, расчитав расстояния от точки pivot до куба и пустышка. Для этого нам нужна была точка pivot - точка вращения.
opp = pivot.getDistanceTo(own)
adj = pivot.getDistanceTo(cube)
Теперь, когда у нас есть стороны, давайте найдем угол:
x_rise = degrees(atan(opp/adj))
z_rise = 90 - x_rise
Вы может не понимаете еще зачем нужны x_rise, z_rise сейчас, но подождите и все скоро поймете. Теперь мы возвратим эти значения из функции:
return(x_rise, z_rise)
Итак, давайте посмотрим на метод track() - этот метод так называется потому что заставляет куб следить за пустышкой. Во-первых, вызывается функция getQuadrant() и сохраняется значение квадранта в переменной 'quadrant':
quadrant = getQuadrant()
Затем вызывается метод getAngle() и сохраняется результат в переменных x_rise и y_rise:
x_rise, z_rise = getAngle()
Чтобы заставить куб перемещаться за пустышкой нам понадобится актуатор движения у куба, а также надо расчитать на какое расстояние перемещать куб по оси X и Z при движении. Вот для чего нам нужны были x_rise и z_rise, если z_rise угол больше чем x_rise тогда нам нужно больше перемещаться по оси z и наоборот.
А как быстро перемещаться? Давайте переведем наши значения x_rise и z_rise в процентные. Угол может быть максимум 90 градусов, поэтому поделим углы на 90 и получим значение от 0 до 1. 1 - это 100 %, а 0 - 0%. Вот как это сделано в коде:
x_ratio = x_rise/90.0
z_ratio = z_rise/90.0
Теперь, следующая порция кода - условия if:
if quadrant == 1:
x = 1
z = 1
elif quadrant == 2:
x = -1
z = 1
elif quadrant == 3:
x = -1
z = -1
elif quadrant == 4:
x = 1
z= -1
Теперь мы используем значения полученые с помощью 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 и покликайте мышкой на экране. В местах клика будут появлятся и падать кубы. Вы можете "ухватить" правой кнопкой мыши новый куб и потаскать его.
Посмотрим как это работает. Когда вы кликаете левой кнопкой на экране то в месте клика (положении пустышки) появляется куб (который на самом деле спрятан во втором слое). Переключитесь на второй слой и откройте скрипт example08_2 - этот скрипт привязан к кубу и имеет сенсор для правой кнопки мыши, сенсор для mouseover и сенсор mouseoverany, и когда они оба активируются вы можете перетаскивать куб. Давайте посмотрим на куб. У него есть свойство (property) selected, установливающееся в 1, когда вы кликаете на нем и 0 - когда вы отпускаете правую кнопку мыши. Для этого нужен такой код:
if mouseOver.isPositive() & rightClick.isPositive():
own.selected = 1
if not rightClick.isPositive():
own.selected = 0
if own.selected == 1:
hit_pos = mouseOverAny.getHitPosition()
own.setPosition([hit_pos[0], 2, hit_pos[2]])
Все что делает этот пример перетаскивания это комбинация нашего первого примера перетаскивания и второго примера перетаскивания, вы можете двигать мышкой очень быстро, но куб не отвалится пока вы удерживаете правую кнопку мыши.
Есть еще один пример работы с мышью и с "самодельным" курсором с сайта blendenzo. О нем - в следующий раз, если это конечно кому-нибудь будет интересно :)
Я нашел отличный урок, в котором автор (Andrew-101 из Австралии (Мельбурн)) популярно рассказал об этом и дал пример файла.
Если вы серьезно решили делать игру или просто хотите пропробовать свои силы в мини-игре, вам понадобится разобраться с использованием мыши.
В этом уроке я расскажу как использовать мышь в GE, получать информацию с нее и затем использовать эту информацию. В примере есть 8 сцен которые помогут вам разобраться с этим досконально, а именно:
* Как отобразить курсор мыши в GE.
* Как получить координаты курсора мыши
* Как получить координаты курсора мыши относительно центра экрана
* Перемещение камеры за курсором
* Перемещение объекта с помощью мыши
* Мгновенно переместить объект в точку экрана где вы кликнули мышкой
* Плавно переместить объект в точку нажатия мышки
* Заставить объект появится в месте нажатия мышки и передвигать эти объекты
Для начала необходимо иметь некоторые навыки Python в GE.
The Mouse Sensors
Давайте посмотрим, какие виды сенсора мыши (Mouse) предоставляет нам Blender. Их 8 - вот они:
* Left Button - Левая кнопка
* Middle Button - Средняя кнопка
* Right Button - Правая кнопка
* Wheel Up - Колесико вверх
* Wheel Down - Колесико вниз
* Movement - Перемещение
* Mouse Over - Перемещение над..
* Mouse Over Any - Перемещение над любым объектом
Первые 5 сенсоров - ничего особенного, с их помощью мы работаем с кнопками мыши, а вот с последними 3-мя стоит разобраться.
Сенсор Movement имеет две функции, использование которых поможет нам реализовать некоторые функции - эти функции .getXPosition() и .getYPosition(). Каждая из этих функций возвращает целое число, это X и Y координаты курсора мыши.
Сенсор Mouseover тоже полезен, с помощью функции isPositive() мы получаем булево значение Истина (true) если курсор мыши находится над владельцем сенсора (объект, к которому вы прикрепили сенсор). Сенсор Mouseover также имеет две функции .getXPosition() и .getYPosition() для получения координат (и множество других), однако мы будем использовать функцию .getHitPosition(). Эта функция возвращает список из x,y и z координат над которыми находится мышь.
Сенсор MouseOverAny похож на предыдущий, за исключением того, что срабатывает не только при перемещении мыши над владельцем сенсора, но и над любым другим объектом.
"Проявляем" курсор мышки в GE
Если вы планируете использовать мышь в GE тогда нам для начала надо отобразить сам курсор мышки.
Для этого нам понадобятся лишь две строчки кода:
import Rasterizer
Rasterizer.showMouse(1)
Первая строка - import Rasterizer - импортирует модуль Rasterizer. Этот модуль управляет экраном в GE, вы можете использовать строчку 'print dir(Rasterizer)', чтобы посмотреть на все функции, которые есть в этом модуле. Вторая строка 'Rasterizer.showMouse(1)' вызывает функцию '.showMouse()' из модуля с параметром 1 (1 - это также True в в python, 0 - False соответственно), говорящая что Rasterizer должен показать мышь. Если мышь не нужна - надо использовать '.showMouse(0)' или '.showMouse(False).
Получаем координаты курсора мыши.
Как их получить? В файле примера для этого откройте сцену 2 и скрипт example02. Кликните на пустышке с именем ('Control2') и в окне Logic посмотрите скрипт контроллера. Для получения координат используются две функции:
mouse_x = mouse.getXPosition()
mouse_y = mouse.getYPosition()
Координаты даются относительно верхнего левого угла.
Это очень просто, не правда ли?
Получение координат курсора относительно центра экрана.
В прошлом примере мы быстро получили координаты курсора, но начало координат находилось в левом верхнем углу. А если мы хотим чтобы начало было в центре экрана? В файле примера выбираем сцену 3, запускаем GE, останавливаем и смотрим вывод консоли - там уже то, что нам нужно. Как это сделать?
Сделать это можно с помощью 4-ех строчек кода:
window_width = Rasterizer.getWindowWidth()
window_height = Rasterizer.getWindowHeight()
mouse_x = mouse.getXPosition() - window_width/2
mouse_y = mouse.getYPosition() - window_height/2
Появились две новые переменные - window_width и window_height, и как вы догадываетесь они нужны, чтобы получить ширину и высоту экрана с помощью функций модуля Rasterizer. Получение значений для наших двух старых переменных mouse_x и mouse_y немного изменились. Чтобы объяснить, посмотрим на диграмму.
На этой диаграмме начало координат находится в левом верхнем углу, а как нам получить середину окна?
Найдем центр -Точка (320,240) ,она может быть получена так:
(Rasterizer.getWindowWidth() / 2, Rasterizer.getWindowHeight() / 2)
Если мы хотим теперь использовать эту точку как начало координат, то должны из координат вычисляемых точек отнимать координату центра окна (320,240).
то есть.
(120 - 320 , 65 - 240) = (-200, -175)
(320 - 320, 240 - 240) = (0, 0)
Надеюсь теперь понятно, почему для получения координат относительно центра мы проделывали эту процедуру.
Перемещение камеры за мышкой
Во многих случаях вам понадобится знать как вращать камеру с помощью мыши. В файле примера выбираем сцену и смотрим скрипт Example04. Чтобы посмотреть как это работает нажимаем P.
Давайте посмотрим на код. Он достаточно прост, за исключением некоторых новшеств:
mouse_x = float(mouse.getXPosition() - window_width/2)
mouse_y = float(mouse.getYPosition() - window_height/2)
Теперь мы преобразовываем результат координат в число с плавающей точкой. Зачем это понадобилось? Причину находим в следующей строке:
motion.setDRot(mouse_y/500, 0, -mouse_x/500, 0)
Этот код использует актуатор движения, прикрепленный к камере и устанавливающий вращение по оси X - делим значение координаты курсора по оси Y на 500, координату Y делаем 0-вой, а Z получаем с помощью деления X координаты курсора на 500 (если делить на 200 или 100 то вращение будет более быстрое и чувствительное).
Зачем я применял float к координатам мыши? Потому что если мы поделим целое число 40 на 500 то получим 0 а когда число с плавающей точкой то 40/500=0.08.
GameLogic.addActiveActuator(motion, 1)
Если вы не знаете зачем нужна эта строка кода, следует подучить python в GE, с его помощью мы активируем наш актуатор с установленным значением поворота камеры.
Rasterizer.setMousePosition(window_width/2,window_height/2)
Эта строка устанавливает положение курсора мыши снова в центр экрана.
Перемещаем объект с помощью мыши.
Перейдем к более интересным примерам, выбираем сцену 5 файла и смотрим скрипт Example05. Если нажмете P и запустите GE, то сможите кликом и ужерживанием на кубе перетаскивать его.
Давайте посмотрим как это сделано. Ранее я упоминал о функции getHPosition для сенсора mouseover. Мы используем эту функцию в этом примере. Функция .getHPosition() возвращает x,y и z положения над которыми находится мышь - представьте луч, который посылается из курсора мыши пока на столкнется с объектом. Так вот с помощью этой функции мы можем установить положение куба в положение курсора мыши, правильно? НЕТ!
Вспомните, что когда мышь пересекает объект , то это совсем не центр объекта, но мы делаем его центром устанавливая положение объекта в нужную точку. В этом случае наш куб будет сдвигаться в сторону камеры. Попробуйте изменить строчку:
own.setPosition([hit_pos[0], 0, hit_pos[2]])
на:
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, чтобы объект не наезжал на камеру).
Мгновенное перемещение объекта к точке нажатия мыши
Если вы видели из прошлого примера, когда вы очень быстро перемещаете курсор то куб как бы "отваливается". Это происходит если курсор за время одного "тика" перемещается на расстояние большее размеров куба и сенсор MouseOver перестает срабатывать. Давайте посмотрим как нам это исправить. Вы знаете что делать - выбираем следующую сцену, следующий скрипт. Теперь мы используем mouseoverany сенсор и плоскость за кубом(вы может и не заметили ее сразу - повращайте вид на 180 градусов).
Теперь мы используем сенсор 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)
Что он делает? Представим, что экран поделен на 4 части - квадранты:
Теперь представим, что центр - это положение коробки-куба. Все что делает этот метод это следит за положением пустышки (а пустышка реально находится там, где мы щелкаем мышкой) по отношению к кубу и определяет в каком квадранте она находится - 1,2,3 или 4. И когда X-координата мышки больше чем X куба и Y пустышки больше чем Y куба, то значит пустышка находится в первом квадранте, правильно? Просто посмотрите на код:
if own_pos[0] >= cube_pos[0]:
if own_pos[2] >= cube_pos[2]:
quadrant = 1
Когда метод нашел в каком квадранте находится пустышка (нажат курсор) он возвращает информацию:
return(quadrant)
Следующая функция, которую мы рассмотрим это getAngle(). Этот метод даст нам значение угла, образованного координатами куба и пустышки.
Вот код:
x = cube_pos[0]
z = own_pos[2]
pivot.setPosition([x, 0, z])
Диаграмма поможет нам лучше понять, что происходит.
Как вы видите из диаграммы, мы берем за точку pivot (центр) для вычисления угла координату X куба и координату Z пустышки, чтобы сформировать правильный прямоугольный треугольник. И надеюсь вы знаете что такое прямоугольный треугольник ;). Давайте посмотрим на вторую строку в коде:
from math import atan, degrees
Мы импортируем из модуля math нужные нам atan и degress. Degress преобразует радианы в градусы а atan нужен для нахождения угла из значения тангенса. Давайте посмотрим на наш треугольник.
The lengths of the opposite and adjacent sides can be found be getting the distance from the cube and empty to the pivot, which is what these two lines are doing:
Длину катетов мы можем найти, расчитав расстояния от точки pivot до куба и пустышка. Для этого нам нужна была точка pivot - точка вращения.
opp = pivot.getDistanceTo(own)
adj = pivot.getDistanceTo(cube)
Теперь, когда у нас есть стороны, давайте найдем угол:
x_rise = degrees(atan(opp/adj))
z_rise = 90 - x_rise
Вы может не понимаете еще зачем нужны x_rise, z_rise сейчас, но подождите и все скоро поймете. Теперь мы возвратим эти значения из функции:
return(x_rise, z_rise)
Итак, давайте посмотрим на метод track() - этот метод так называется потому что заставляет куб следить за пустышкой. Во-первых, вызывается функция getQuadrant() и сохраняется значение квадранта в переменной 'quadrant':
quadrant = getQuadrant()
Затем вызывается метод getAngle() и сохраняется результат в переменных x_rise и y_rise:
x_rise, z_rise = getAngle()
Чтобы заставить куб перемещаться за пустышкой нам понадобится актуатор движения у куба, а также надо расчитать на какое расстояние перемещать куб по оси X и Z при движении. Вот для чего нам нужны были x_rise и z_rise, если z_rise угол больше чем x_rise тогда нам нужно больше перемещаться по оси z и наоборот.
А как быстро перемещаться? Давайте переведем наши значения x_rise и z_rise в процентные. Угол может быть максимум 90 градусов, поэтому поделим углы на 90 и получим значение от 0 до 1. 1 - это 100 %, а 0 - 0%. Вот как это сделано в коде:
x_ratio = x_rise/90.0
z_ratio = z_rise/90.0
Теперь, следующая порция кода - условия if:
if quadrant == 1:
x = 1
z = 1
elif quadrant == 2:
x = -1
z = 1
elif quadrant == 3:
x = -1
z = -1
elif quadrant == 4:
x = 1
z= -1
Теперь мы используем значения полученые с помощью 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 и покликайте мышкой на экране. В местах клика будут появлятся и падать кубы. Вы можете "ухватить" правой кнопкой мыши новый куб и потаскать его.
Посмотрим как это работает. Когда вы кликаете левой кнопкой на экране то в месте клика (положении пустышки) появляется куб (который на самом деле спрятан во втором слое). Переключитесь на второй слой и откройте скрипт example08_2 - этот скрипт привязан к кубу и имеет сенсор для правой кнопки мыши, сенсор для mouseover и сенсор mouseoverany, и когда они оба активируются вы можете перетаскивать куб. Давайте посмотрим на куб. У него есть свойство (property) selected, установливающееся в 1, когда вы кликаете на нем и 0 - когда вы отпускаете правую кнопку мыши. Для этого нужен такой код:
if mouseOver.isPositive() & rightClick.isPositive():
own.selected = 1
if not rightClick.isPositive():
own.selected = 0
if own.selected == 1:
hit_pos = mouseOverAny.getHitPosition()
own.setPosition([hit_pos[0], 2, hit_pos[2]])
Все что делает этот пример перетаскивания это комбинация нашего первого примера перетаскивания и второго примера перетаскивания, вы можете двигать мышкой очень быстро, но куб не отвалится пока вы удерживаете правую кнопку мыши.
Есть еще один пример работы с мышью и с "самодельным" курсором с сайта blendenzo. О нем - в следующий раз, если это конечно кому-нибудь будет интересно :)
Ярлыки:
Мои статьи,
Ресурсы Blender
Blender и Second Life
Пособие от Джеки Антонелли по созданию и экспорту анимации из Blender в Second Life.
Вот небольшое пособие, чтобы помочь незнакомым с Blender людям, которые хотят использовать экпортер анимации (вообще я написала его для одного друга, которому хотел помочь, ну а если я собираюсь написать что-нибудь для нее, то значит это получит каждый!)
Отлично, сначала — плохие новости: Blender это невероятно сложная программа и ее интерфейс отличается от всего, что вы когда либо использовали (и приводит даже экпертов в некоторое замешательство). Внутри Blender есть все инструменты, которые могут понадобится, чтобы сделеть полнофункциональный 3D проект или мультфильм, такой например как «История игрушек» или The Incredibles (или Big Buck Bunny, который на самом деле был полностью сделан в Blender). Чтобы полностью овладеть всеми инструментами в Blender понадобятся годы тренировок..
(дополнение от переводчика — автор сильно ошибается, преувеличивая сложность интерфейса и в целом программы — она лишь производит такое впечатление)
Теперь — хорошие новости: Если вам просто надо сделать несколько анимаций для SL то вам не понадобится 95 процентов возможностей программы! Это и не удивительно — Blender создавался не для этих нужд. А я уже сделала все самое сложное за вас.
Для экспортирования анимации вам нужно овладеть 3-мя основными навыками в Blender:
1. Как перемещать камеру по кругу, чтобы рассмотреть сцену под разными углами.
2. Как позиционировать кости арматуры (так в Blender называется “skeleton”).
3. Как вставлять ключевые кадры и перемещаться между кадрами.
Для начала нам понадобится установить Python с Blender и скачать мой файл с экспортером для анимации (http://tentacolor.com/files/bvhexporter-2008-06-02.blend).
Откройте файл экпортера в Blender.
Знакомимся с интерфейсом.

Вот что вы должны увидеть при открытии файла.
Нам понадобится установить некоторые опции в программе:

То есть необходимо включить:
* Middle Mouse: Rotate View.
* View Rotation: Turntable.
Файл содержит как мужскую так и женскую модель (аватар), переключение между которыми можно сделать с помощью кнопок 1 и 2 (слои)
Дальнейшие ваши действия ограничены вашей фантазией. Вы создаете анимацию в Blender для арматуры. Учебников по этой теме предостаточно, поэтому я решил не делать перевод этой части. Работать с ключевыми кадрами - элементарно. Тем более автор постарался сделать раскладку окон удобной для создания анимации.
Ну а скрипт для экспорта анимации - совсем прост.
В его опциях вы можете установить:
Путь к создаваемому файлу анимации bvh.
Speed - количество кадров в секунду
Dups - сколько раз повторно экпортировать каждый кадр
Step - шаг анимации (1- каждый кадр, 2 - через кадр и т.д)
Loops - сколько раз по циклу экспортировать всю анимацию
Start и End - стартовый и конечный кадр анимации
Установите нужные вам параметры и нажмите Export!
Файл с расширением bvh появится там, где вы задали его месторасположение в скрипте.
На этом - все, для изучения нюансов нужно изучение Second Life (а у меня такого желания нет). На сайте есть уточнения по работе скрипта, если есть вопросы - спрашивайте в комментариях.
Вот небольшое пособие, чтобы помочь незнакомым с Blender людям, которые хотят использовать экпортер анимации (вообще я написала его для одного друга, которому хотел помочь, ну а если я собираюсь написать что-нибудь для нее, то значит это получит каждый!)
Отлично, сначала — плохие новости: Blender это невероятно сложная программа и ее интерфейс отличается от всего, что вы когда либо использовали (и приводит даже экпертов в некоторое замешательство). Внутри Blender есть все инструменты, которые могут понадобится, чтобы сделеть полнофункциональный 3D проект или мультфильм, такой например как «История игрушек» или The Incredibles (или Big Buck Bunny, который на самом деле был полностью сделан в Blender). Чтобы полностью овладеть всеми инструментами в Blender понадобятся годы тренировок..
(дополнение от переводчика — автор сильно ошибается, преувеличивая сложность интерфейса и в целом программы — она лишь производит такое впечатление)
Теперь — хорошие новости: Если вам просто надо сделать несколько анимаций для SL то вам не понадобится 95 процентов возможностей программы! Это и не удивительно — Blender создавался не для этих нужд. А я уже сделала все самое сложное за вас.
Для экспортирования анимации вам нужно овладеть 3-мя основными навыками в Blender:
1. Как перемещать камеру по кругу, чтобы рассмотреть сцену под разными углами.
2. Как позиционировать кости арматуры (так в Blender называется “skeleton”).
3. Как вставлять ключевые кадры и перемещаться между кадрами.
Для начала нам понадобится установить Python с Blender и скачать мой файл с экспортером для анимации (http://tentacolor.com/files/bvhexporter-2008-06-02.blend).
Откройте файл экпортера в Blender.
Знакомимся с интерфейсом.

Вот что вы должны увидеть при открытии файла.
Нам понадобится установить некоторые опции в программе:

То есть необходимо включить:
* Middle Mouse: Rotate View.
* View Rotation: Turntable.
Файл содержит как мужскую так и женскую модель (аватар), переключение между которыми можно сделать с помощью кнопок 1 и 2 (слои)
Дальнейшие ваши действия ограничены вашей фантазией. Вы создаете анимацию в Blender для арматуры. Учебников по этой теме предостаточно, поэтому я решил не делать перевод этой части. Работать с ключевыми кадрами - элементарно. Тем более автор постарался сделать раскладку окон удобной для создания анимации.
Ну а скрипт для экспорта анимации - совсем прост.
В его опциях вы можете установить:
Путь к создаваемому файлу анимации bvh.
Speed - количество кадров в секунду
Dups - сколько раз повторно экпортировать каждый кадр
Step - шаг анимации (1- каждый кадр, 2 - через кадр и т.д)
Loops - сколько раз по циклу экспортировать всю анимацию
Start и End - стартовый и конечный кадр анимации
Установите нужные вам параметры и нажмите Export!
Файл с расширением bvh появится там, где вы задали его месторасположение в скрипте.
На этом - все, для изучения нюансов нужно изучение Second Life (а у меня такого желания нет). На сайте есть уточнения по работе скрипта, если есть вопросы - спрашивайте в комментариях.
Ярлыки:
Ресурсы Blender
четверг, 12 февраля 2009 г.
Истории Улитки -продолжение!

Dragons Tale Films выпустили еще два забавных мультфильма об улитке из их серии. Рендеринг производился с помощью фермы GreenButton
Источник: http://www.blendernation.com/2009/02/11/more-snail-storys/
Ярлыки:
Новости
среда, 11 февраля 2009 г.
MOCAP и Blender

Многие знают о технологии Motion Capture. С помощью специальных программ и оборудования можно "захватить" движения человека и записать их, а затем использовать для анимации своих моделей. Оборудование для motion capture дорогое и чаще всего такие студии просто арендуют на нужное время. Множество анимационных фильмов снято с использованием этой технологии и только с помощью нее (и комбинации с другими) стало возможным такое правдоподобное, эмоциональное и человекоподобное поведение персонажей.
Однако не стоит расстраиваться и думать, что все это не для нас! В сети есть магазины, которые торгуют такими файлами motion capture. Ну и конечно же, это был бы не Интернет, если бы не было и бесплатных и при этом абсолютно легальных файлов motion capture. Один из таких сайтов - http://www.mocapdata.com. На нем есть секция бесплатных файлов и их достаточное количество (более 4000), они разделены по категориям! С помощью Google вы легко найдете еще множество подобных источников. На этом сайте потребуется регистрация даже чтобы просто скачать бесплатные файлы, но думаю эта процедура вас не утомит.
На сайте есть в основном два вида файлов motion capture - файлы для Vicon 3D (расширение С3D) и файлы Biovision Hierarchy (расширение bvh).
Ну и что толку - скажите вы? А толк в том, что Blender позволяет импортировать нужные нам движения из этих файлов! Процедура проста, для C3D вам вообще не понадобится вводить никаких параметров, в BVH вы сможете указать несколько больше и скрипт дает более гибкое импортирование.
Вообщем могу сказать - это потрясающе! Вы почувствуете мощь MOCAP!
Ярлыки:
Ресурсы Blender
Подписаться на:
Сообщения (Atom)
