Как правильно выровнять повернутый текст влево в ThreeDScene от Manim?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно выровнять повернутый текст влево в ThreeDScene от Manim?

Сообщение Anonymous »

Я работаю с ThreeDScene от Manim, чтобы анимировать список слов. Цель – повернуть камеру и последовательно сфокусироваться на каждом слове.
Проблема возникает при выравнивании слов по левому краю. В частности, слова «and», «Go» и «Animation» поворачиваются на 90 градусов, но они не выравниваются по левому краю должным образом, когда я использую align_to().
I' Я пробовал выравнивать их, используя другие текстовые объекты и фиксированные позиции, но ни один из подходов не сработал.
Есть ли правильный способ добиться выравнивания по левому краю для повернутого текста в Manim?

Код: Выделить всё

from manim import *

class rotateCamera(ThreeDScene):
def construct(self):
# List of words to animate
words = ["Create", "Smooth", "Stop", "and", "Go", "Animation"]

# Style for the text
text_style = {
"font_size": 72,
"color": WHITE
}

# Background color
self.camera.background_color = DARK_GRAY

# Initial camera orientation
self.set_camera_orientation(phi=0*DEGREES, theta=-90*DEGREES )

# Adjust positions to fit all text within the view
positions = [
np.array([-4, 2, 0]),  # First word
np.array([-4, 0, 0]),  # Second word
np.array([-4, -2, 0]),  # Third word
np.array([-3, -4, 0]),   # Fourth word
np.array([-5, -4, 0]),   # Fifth word
np.array([-6, -4, 0])   # Sixth word
]

# Create text objects
text_objects = [Text(word, **text_style) for word in words]

# Position and rotate text
for i, text in enumerate(text_objects):
text.move_to(positions[i])
if i>2:
text.rotate(-90 * DEGREES)

# Add all words to the scene but keep them invisible initially
for text in text_objects:
self.add(text.set_opacity(0))

# Animate focusing on each word
for i, text in enumerate(text_objects):
# Update camera orientation for vertical text
if i > 2:
self.move_camera(phi=0 * DEGREES, theta=-180 * DEGREES, run_time=2, frame_center=text.get_center(), rate_func=smooth)

# Focus on the word and make it visible
self.play(
text.animate.set_opacity(1).scale(1.5).align_to(positions[i], LEFT),
run_time=1.5,
rate_func=smooth
)
self.wait(1)
else:
self.play(
text.animate.set_opacity(1).scale(1.5).align_to(text_objects[0],LEFT),
run_time=1.5,
rate_func=smooth
)

self.wait(1)

# Hold the final position
self.wait(2)
Я попробовал использовать align_to() для выравнивания повернутого текста по левому краю, ожидая, что все слова (включая повернутые) будут выстраиваться последовательно. Однако повернутые слова, такие как «и», «Go» и «Анимация», не выровнялись должным образом, вероятно, из-за того, что их поворот на 90 градусов повлиял на их ограничивающую рамку. Я также попробовал фиксированное позиционирование, но это не решило проблему.

Подробнее здесь: https://stackoverflow.com/questions/793 ... hreedscene
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»