Список разделов › Геймдев в Blender › Игровой движок Blender
К пустышке привязан объект или их группа. Объект скрыт (перенесен на другой слой). При запуске BGE отображаются только пустышки, к которым привязаны объекты. Далее. А почему сплайны не могут отображаться в BGE? Там все построено на треугольниках, полигонах? А сплайны это уже нет. .... Разбираюсь, сколько всего надо знать.denis8424 писал(а):В общем уточни, как бы ты хотел, чтобы оно выглядело
Если привязки не будут меняться, то можно к пустышке прикрепить объект, который будет становиться видимым/невидимым, в зависимости от каких-то условий, которые тебе нужны. То есть парентишь к пустышке куб, и в настройках физики делаешь его видимым/невидимым. Хотя проще использовать объекты вместо пустышек изначально. А скриптом вообще замечательно.Line писал(а):К пустышке привязан объект или их группа. Объект скрыт (перенесен на другой слой). При запуске BGE отображаются только пустышки, к которым привязаны объекты.
Потому что разработчик не написал такую функцию, тем более, что она не нужна.Line писал(а):Далее. А почему сплайны не могут отображаться в BGE? Там все построено на треугольниках, полигонах?
import bge
cont = bge.logic.getCurrentController()
scene = bge.logic.getCurrentScene()
key = cont.sensors['Keyboard']
if key.positive:
for obj in scene.objects:
if 'Empty' in obj.name and obj.children:
pos = obj.worldPosition
vec1X = [obj.worldPosition[0] - 1, obj.worldPosition[1], obj.worldPosition[2]]
vec2X = [obj.worldPosition[0] + 1, obj.worldPosition[1], obj.worldPosition[2]]
vec1Y = [obj.worldPosition[0], obj.worldPosition[1] -1, obj.worldPosition[2]]
vec2Y = [obj.worldPosition[0], obj.worldPosition[1] +1, obj.worldPosition[2]]
vec1Z = [obj.worldPosition[0], obj.worldPosition[1], obj.worldPosition[2]-1]
vec2Z = [obj.worldPosition[0], obj.worldPosition[1], obj.worldPosition[2]+1]
color = [256, 0, 0]
bge.render.drawLine(vec1X, vec2X, color)
bge.render.drawLine(vec1Y, vec2Y, color)
bge.render.drawLine(vec1Z, vec2Z, color)
Ориентация осей записывается в матрицы в виде столбцов, то есть вертикально. Можно выковырять вектор ориентации конкретной оси просто по индексам, или с помощью функции own.getAxisVect(), подробнее смотри в #bge.types.KX_GameObject.getAxisVectrek_on писал(а):Есть объект, он вращается на произвольный угол. Если запросить ориентацию относительно глобальных или локальных координат, появляется матрица (3х3). Так вот собственно вопрос как из этих значений получить градусы
rek_on писал(а):и еще один вопрос как с помощью скрипта изменить значение пророперти присвоенного к другому объекту?
otherObject = bge.logic.getCurrentScene().objects['имя другого объекта']
otherObject['prop'] = чему-то там.
Есть объект, он вращается на произвольный угол. Если запросить ориентацию относительно глобальных или локальных координат, появляется матрица (3х3). Так вот собственно вопрос как из этих значений получить градусы?
from bge import logic
rad = 180/3.14
obj = logic.getCurrentController().owner
euler = obj.worldOrientation.to_euler()
print(euler.z/rad) # угол по оси z в градусах
euler.x = 45*rad # градусы, переведенные в радианы
euler.z = 30*rad
obj.worldOrientation = euler.to_matrix()
Как грубо =(Wegemu писал(а):rad = 180/3.14
to_matrix, кстати, необязательно, само переведётся.Wegemu писал(а):obj.worldOrientation = euler.to_matrix()
Не, моё 2011 годом датируетсяdenis8424 писал(а):"какие ваши доказательства?(с)"
andreymal писал(а):Как грубо =(
import math
rad = 180/math.pi
andreymal писал(а):to_matrix, кстати, необязательно, само переведётся.
А вообще я на каких-то геймдев-сайтах читал, что туда-сюда матрицы-градусы лучше конвертировать поменьше, а то операция типа ресурсозатратная. Но лично не проверял.
А он всё равно уже где-нибудь внутри блендера подключен, ресурсы не тратит.Wegemu писал(а):Нафига "лишний" модуль подключать?
Нет, я хочу максимально доступную точность) К тому же это уже начинает иметь значение, если где-то считать обороты тысячами, например (не в данном случае, да).Wegemu писал(а):Да и такая точность избыточна.
все же rad = 3.14/180Wegemu писал(а):rad = 180/3.14
Wegemu писал(а):euler = obj.worldOrientation.to_euler()
obj.worldOrientation = euler.to_matrix()
В чем проблема?rek_on писал(а):у вас глобальные величины оринтации, а можно ли как нибудь вращать объекты в локальной системе?
просто изменив с obj.worldOrientation = euler на obj.localOrientation = euler не работает, точнее работает но все равно беруться глобальные величины
euler = obj.localOrientation.to_euler()
obj.localOrientation = euler.to_matrix()
Wegemu писал(а):В чем проблема?
а чтобы свечение было через ноды, как сделать?maleficmax писал(а):Продублировать плоскость и инвертировать нормали. Не знаю конкретно про БГЕ, но в юнити помогало )
Вернуться в Игровой движок Blender
Сейчас этот раздел просматривают: 1 гость