diff --git a/voicevox-remotion-template/public/image/sayo-standee-base.png b/voicevox-remotion-template/public/image/sayo-standee-base.png new file mode 100644 index 0000000..6325f67 --- /dev/null +++ b/voicevox-remotion-template/public/image/sayo-standee-base.png Binary files differ diff --git a/voicevox-remotion-template/src/data/script.ts b/voicevox-remotion-template/src/data/script.ts index 7639453..473cc59 100644 --- a/voicevox-remotion-template/src/data/script.ts +++ b/voicevox-remotion-template/src/data/script.ts @@ -7,6 +7,12 @@ kind: "zundamon" | "sayo"; accentColor: string; imagePath?: string; + imageLayout?: Readonly<{ + width?: number; + maxHeight?: number; + translateY?: number; + }>; + nameplatePosition?: "top" | "bottom"; }>; export type CharacterDefinition = Readonly<{ @@ -36,6 +42,13 @@ avatar: { kind: "sayo", accentColor: "#6b5f83", + imagePath: "image/sayo-standee-base.png", + imageLayout: { + width: 560, + maxHeight: 760, + translateY: -60, + }, + nameplatePosition: "top", }, }, } as const satisfies Record; diff --git a/voicevox-remotion-template/src/yukkuri-composition.tsx b/voicevox-remotion-template/src/yukkuri-composition.tsx index 2a62428..e76c06e 100644 --- a/voicevox-remotion-template/src/yukkuri-composition.tsx +++ b/voicevox-remotion-template/src/yukkuri-composition.tsx @@ -389,6 +389,25 @@ const scale = focused ? 1.05 : hasMultipleCharacters ? 0.88 : 1; const opacity = focused || !hasMultipleCharacters ? 1 : 0.72; const translateY = focused ? bounce : bounce * 0.35; + const imageTranslateY = avatar.imageLayout?.translateY ?? 0; + const nameplatePosition = avatar.nameplatePosition ?? "bottom"; + + const nameplate = ( +
+ {character.displayName} +
+ ); return (
+ {nameplatePosition === "top" ? nameplate : null} {avatar.imagePath ? ( ) : avatar.kind === "sayo" ? ( - +
+ +
) : ( - +
+ +
)} -
- {character.displayName} -
+ {nameplatePosition === "bottom" ? nameplate : null}
); };