Ich entschied mich, Blenders Renderbild für den Entwurf des Cartoons zu verwenden. Es wird davon ausgegangen, dass das Renderbild für jeden Keyframe entsprechend "1 Frame = 1 Keyframe" in die Cartoon-Erstellungssoftware eingefügt wird.
Normalerweise haben Cartoon-Frames unterschiedliche Seitenverhältnisse für jeden Frame. In Blender können Sie jedoch nicht die Auflösung für jeden Keyframe festlegen. Sie müssen für alle Keyframes die gleiche Auflösung haben oder Frame für Frame manuell wechseln. Beides ist unpraktisch.
Also habe ich mir überlegt, wie ich die Auflösung für jeden Keyframe einstellen soll. Mit Blender können Sie eine Reihe von ** Markierungen ** für Keyframes festlegen. Daher habe ich beschlossen, das Seitenverhältnis der Auflösung dort aufzuzeichnen.
Im allgemeinen horizontalen Lesemanga ist die vertikale und horizontale Größe des Rahmens unbestimmt, diesmal handelt es sich jedoch um einen vertikalen Lesemanga, und es wird angenommen, dass die Breite des Rahmens bei 2480px immer konstant ist. Die Methode zur gleichzeitigen Angabe von Höhe und Breite wird am Ende ergänzt.
Drücken Sie im Zeitleistenfenster M, um dem Keyframe eine Markierung hinzuzufügen, und Strg + M, um das Seitenverhältnis als Markierungsname einzugeben.
Geben Sie diesmal den Wert "Y / X" ein. Zum Beispiel ist X: Y = 4: 3 "0,75", 1: 1 ist "1", 1: 2 ist "2".
Übrigens können mehrere Marker in einem Frame gesetzt werden, aber in diesem Programm wird der erste gefundene Wert als Seitenverhältnis verwendet.
Öffnen Sie dann das Texteditorfenster und geben Sie den folgenden Code ein.
set_resolution_from_marker.py
import bpy
RESOLUTION_X = 2480
DEFAULT_RATIO = 1.0
def find_ratio_from_current_keyframe():
#Suchen Sie in allen Markierungen nach dem Markierungssatz für den aktuellen Keyframe
marker_items = bpy.context.scene.timeline_markers.items()
current = bpy.data.scenes["Scene"].frame_current
markers = [item[0] for item in marker_items if item[1].frame == current]
#Gibt das Standardverhältnis zurück, wenn der Marker nicht vorhanden ist
if len(markers) < 1:
print(f"No marker is set to current keyframe. Now ratio is {DEFAULT_RATIO}.")
return DEFAULT_RATIO
print("Found marker(s): ", markers)
#Konvertiert die Markierungszeichenfolge in eine Zahl und gibt sie zurück
for m in markers:
try:
ratio = float(m)
print("Ratio is set to ", ratio)
return ratio
except ValueError as e:
print(e)
continue
#Gibt das Standardverhältnis zurück, wenn keine Markierungen vorhanden sind, die in Zahlen konvertiert werden können
print(f"Marker is set to current keyframe but not valid number. Now ratio is {DEFAULT_RATIO}.")
return DEFAULT_RATIO
def update_resolution(scene):
scene.render.resolution_x = RESOLUTION_X
scene.render.resolution_y = RESOLUTION_X * find_ratio_from_current_keyframe()
#Stellen Sie den Rückruf so ein, dass die Auflösung beim Ändern von Keyframes aktualisiert wird
bpy.app.handlers.frame_change_pre.append(update_resolution)
ℹ️ Kurzer Kommentar
Führen Sie "Skript ausführen (Alt + P)" im Texteditor aus.
Danach wird die Auflösung X & Y bei jedem Keyframe-Wechsel automatisch eingestellt.
Diesmal war es ein etwas spezieller Fall von "X = 2480px behoben". Wenn Sie jedoch X und Y gleichzeitig festlegen möchten, können Sie dies problemlos tun, indem Sie die Markernotation und das Python-Skript ändern.
Schreiben Sie beispielsweise "1280.720" in die Markierung, teilen Sie die Zeichenfolge in einem Python-Skript durch Kommas und weisen Sie X den ersten Wert und Y den zweiten Wert zu.
Ich konnte es nicht tun. Dies liegt daran, dass der Treiber keinen der Werte unter der Scene-Eigenschaft festlegen kann, einschließlich der Auflösung.
Ich konnte keinen Rückruf finden, der zu diesem Zeitpunkt angerufen werden konnte: enttäuscht: Es tut uns leid, Sie zu stören, aber bitte verwenden Sie die Pfeiltasten, um den Keyframe um eins vorzuschieben und ihn zurückzuschieben.
Recommended Posts