import React from 'react'; import { Film } from 'lucide-react'; import { TypewriterText } from './common/TypewriterText'; import { ContentCard } from './common/ContentCard'; import { SkeletonCard } from './common/SkeletonCard'; import { IconLoading } from './common/IconLoading'; import { ProgressBar } from './common/ProgressBar'; interface ProductionContent { composition?: Array<{ id: string; stableId: string; element: string; details: string; status: string; progress: number; }>; lighting?: { stableId: string; ambient: string; artificial: string; mood: string; progress: number; }; performance?: Array<{ id: string; stableId: string; aspect: string; details: string; quality: string; progress: number; }>; sceneDetails?: { stableId: string; textures: string; objects: string; atmosphere: string; progress: number; }; technical?: Array<{ param: string; value: string; status: string; }>; renderOutput?: { currentFrame: number; totalFrames: number; quality: string; estimated: string; }; } interface VisualDirectorProps { currentContent: ProductionContent; isPlaying: boolean; } const VisualDirector: React.FC = ({ currentContent, isPlaying }) => { return (
{/* 左侧:画面构成和光影氛围 */}
{/* 画面构成要素 */}

画面构成要素

{currentContent.composition && currentContent.composition.length > 0 ? ( currentContent.composition.map((comp) => (
{comp.element} {comp.status}
)) ) : ( Array.from({length: 3}, (_, i) => ( )) )}
{/* 光影氛围营造 */}

光影氛围营造

{currentContent.lighting ? (
环境光设计
人工光布置
情绪氛围
) : (
{Array.from({length: 3}, (_, i) => ( ))}
)}
{/* 右侧:角色表演和技术参数 */}
{/* 角色表演捕捉 */}

角色表演捕捉

{currentContent.performance ? ( currentContent.performance.map((perf) => (
{perf.aspect}
{perf.quality}
)) ) : ( Array.from({length: 3}, (_, i) => ( )) )}
{/* 场景细节渲染 */}

场景细节渲染

{currentContent.sceneDetails ? (
材质质感
物体细节
大气效果
) : (
{Array.from({length: 3}, (_, i) => ( ))}
)}
{/* 技术参数控制 */}

技术参数控制

{currentContent.technical ? ( <>
{currentContent.technical.map((tech, index) => (
{tech.param} {tech.value} {tech.status}
))}
{/* 渲染进度 */} {currentContent.renderOutput && (
{Math.round((currentContent.renderOutput.currentFrame / currentContent.renderOutput.totalFrames) * 100)}%
渲染完成
帧数: {currentContent.renderOutput.currentFrame}/{currentContent.renderOutput.totalFrames}
质量: {currentContent.renderOutput.quality} | {currentContent.renderOutput.estimated}
)} ) : ( <>
{Array.from({length: 4}, (_, i) => ( ))}
)}
); }; export default VisualDirector;