Привет, я новичок в программировании. я хотел вращаться вокруг линии, которая не проходит через начало координат объекта, созданного в блендере.
(Я нахожусь в разделе сценариев блендера).
Мне нужна помощь, поскольку подход, который я использую, неверен и не работает
Поэтому сначала я сделал так:
затем я понял, что не могу этого сделать, потому что кадры обновлялись только в конце моего преобразования, поэтому часть матрицы перевода могла быть только вектором.
Поэтому я хотел сделать так, чтобы для каждой степени обновлялись значения, и написал это:
В конце концов, это все равно не работает. Мой куб не движется, даже если бы код работал, он обновлялся бы через определенные промежутки времени. Я хотел использовать матрицы в качестве упражнения, чтобы научиться манипулировать матрицами. Я сформулировал проблему следующим образом: если бы я сделал один шаг вперед, поверните, а затем сделал один шаг назад, я бы вращался вокруг оси передо мной на одну единицу, но в коде я бы сохранил окончательное преобразование, и кадры принесли бы меня от системы отсчета 1 к системе 2 без какого-либо промежуточного шага. Если бы я вращал объект вокруг оси, проблема бы не возникла, потому что кадры двигались (по какой-то причине, я не знаю) плавно. Проблема в том, что я хочу переместить объект вокруг другой оси, например, если я хочу, чтобы он вращался по орбите. Является ли мой подход совершенно неправильным или его можно изменить, чтобы заставить его работать? иначе я не знаю, как решить эту проблему. Спасибо, если вы прочитали это и потрудились ответить мне.
Привет, я новичок в программировании. я хотел вращаться вокруг линии, которая не проходит через начало координат объекта, созданного в блендере. (Я нахожусь в разделе сценариев блендера). Мне нужна помощь, поскольку подход, который я использую, неверен и не работает Поэтому сначала я сделал так: [code]import bpy bpy.ops.mesh.primitive_cube_add(location=(0, 0, 0)) from mathutils import Matrix, Vector import math import numpy as np
# Create a 4x4 identity matrix identity_matrix = Matrix.Identity(4) print(identity_matrix)
# Access and keyframe the fourth column of the final matrix translation_final = final_matrix.col[3] obj.location = (translation_final.x, translation_final.y, translation_final.z) obj.keyframe_insert(data_path="location", frame=50)
bpy.context.scene.frame_start = 1 bpy.context.scene.frame_end = 50 bpy.context.scene.frame_set(1) [/code] затем я понял, что не могу этого сделать, потому что кадры обновлялись только в конце моего преобразования, поэтому часть матрицы перевода могла быть только вектором. Поэтому я хотел сделать так, чтобы для каждой степени обновлялись значения, и написал это: [code]import bpy bpy.ops.mesh.primitive_cube_add(location=(0, 0, 0)) from mathutils import Matrix, Vector import math import numpy as np
# Create a 4x4 identity matrix identity_matrix = Matrix.Identity(4) print(identity_matrix)
obj = bpy.context.active_object
for i in range(360): angle = math.radians(i) rotation_matrix = Matrix(( (math.cos(angle), -math.sin(angle), 0.0, 0.0), (math.sin(angle), math.cos(angle), 0.0, 0.0), (0.0, 0.0, 1.0, 0.0), (0.0, 0.0, 0.0, 1.0) ))
bpy.context.scene.frame_start = i bpy.context.scene.frame_end = 360 bpy.context.scene.frame_set(i)
# Additional code outside the loop can be placed here print("The loop has finished.") [/code] В конце концов, это все равно не работает. Мой куб не движется, даже если бы код работал, он обновлялся бы через определенные промежутки времени. Я хотел использовать матрицы в качестве упражнения, чтобы научиться манипулировать матрицами. Я сформулировал проблему следующим образом: если бы я сделал один шаг вперед, поверните, а затем сделал один шаг назад, я бы вращался вокруг оси передо мной на одну единицу, но в коде я бы сохранил окончательное преобразование, и кадры принесли бы меня от системы отсчета 1 к системе 2 без какого-либо промежуточного шага. Если бы я вращал объект вокруг оси, проблема бы не возникла, потому что кадры двигались (по какой-то причине, я не знаю) плавно. Проблема в том, что я хочу переместить объект вокруг другой оси, например, если я хочу, чтобы он вращался по орбите. Является ли мой подход совершенно неправильным или его можно изменить, чтобы заставить его работать? иначе я не знаю, как решить эту проблему. Спасибо, если вы прочитали это и потрудились ответить мне.