Skip to content

Commit 3908190

Browse files
committed
Added Frames to keyframe editot. Made it so keyframes disappear when they clip frame length.
1 parent 9870db3 commit 3908190

File tree

2 files changed

+52
-34
lines changed

2 files changed

+52
-34
lines changed

src/components/ui/KeyFrames.tsx

Lines changed: 51 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ const KeyFrames = () => {
5555
animProg:state.animProg, setAnimProg:state.setAnimProg
5656
})))
5757

58-
const {keyFrames, frames, useTime, frameRate, timeRate, currentFrame, setCurrentFrame} = useImageExportStore(useShallow(state=>({
59-
keyFrames:state.keyFrames, frames:state.frames, currentFrame:state.currentFrame,
60-
useTime:state.useTime, frameRate:state.frameRate, timeRate:state.timeRate, setCurrentFrame:state.setCurrentFrame
58+
const {keyFrames, frames, useTime, frameRate, timeRate, orbit, currentFrame, setCurrentFrame, setFrames} = useImageExportStore(useShallow(state=>({
59+
keyFrames:state.keyFrames, frames:state.frames, orbit:state.orbit, currentFrame:state.currentFrame,
60+
useTime:state.useTime, frameRate:state.frameRate, timeRate:state.timeRate, setCurrentFrame:state.setCurrentFrame, setFrames:state.setFrames
6161
})))
6262
const timeRatio = timeRate/frameRate
6363
const keyFrameList = keyFrames ? Array.from(keyFrames.keys()).sort((a, b) => a - b) : null;
@@ -91,24 +91,51 @@ const KeyFrames = () => {
9191
color='var(--play-background)'
9292
onClick={()=>useImageExportStore.getState().setKeyFrameEditor(false)}
9393
/>
94-
<div className='flex justify-center items-center'>
95-
<Button
96-
className='cursor-pointer'
97-
onClick={()=>{SetKeyFrame(currentFrame)}}
98-
>Add Keyframe
99-
</Button>
100-
<Button
101-
disabled={!keyFrameList}
102-
className='cursor-pointer'
103-
onClick={()=>{useImageExportStore.setState({keyFrames: undefined})}}
104-
>Clear Keyframes
105-
</Button>
106-
<Button
107-
disabled={!keyFrameList}
108-
className='cursor-pointer'
109-
onClick={()=>{useImageExportStore.getState().PreviewKeyFrames()}}
110-
>Preview Full Animation
111-
</Button>
94+
<div className='flex justify-between items-center'>
95+
{/* Information */}
96+
<div className='ml-4'>
97+
<div style={{visibility: orbit? "visible" : "hidden"}}>
98+
<b>Camera Motion overwriten by orbit</b>
99+
</div>
100+
</div>
101+
102+
{/* Buttons */}
103+
<div className='flex justify-center items-center'>
104+
<Button
105+
className='cursor-pointer'
106+
onClick={()=>{SetKeyFrame(currentFrame)}}
107+
>Add Keyframe
108+
</Button>
109+
<Button
110+
disabled={!keyFrameList}
111+
className='cursor-pointer'
112+
onClick={()=>{useImageExportStore.setState({keyFrames: undefined})}}
113+
>Clear Keyframes
114+
</Button>
115+
<Button
116+
disabled={!keyFrameList}
117+
className='cursor-pointer'
118+
onClick={()=>{useImageExportStore.getState().PreviewKeyFrames()}}
119+
>Preview Full Animation
120+
</Button>
121+
</div>
122+
123+
{/* Frame Information */}
124+
<div className='flex justify-center'>
125+
<div className='flex justify-end items-center mr-2'>
126+
<label htmlFor="frames"><b>Frames:</b></label>
127+
<Input className='w-[80px] ml-2' id="frames" type='number' step={1} value={frames} onChange={e => setFrames(Math.max(parseInt(e.target.value),2))} />
128+
</div>
129+
<div className='flex justify-end items-center'>
130+
<b >Frame:</b>
131+
<Input value={currentFrame} type='number'
132+
className='w-[80px] ml-2'
133+
min={1}
134+
step={1}
135+
onChange={e =>parseInt(e.target.value) ? setCurrentFrame(Math.max(parseInt(e.target.value), 1)) : 1}
136+
/>
137+
</div>
138+
</div>
112139
</div>
113140
<div className="relative w-full my-2 px-2 bg-[var(--background)] drop-shadow-[0_0_4px_var(--notice-shadow)] rounded-lg">
114141
{keyFrameList?.map((frame) => {
@@ -123,7 +150,8 @@ const KeyFrames = () => {
123150
top:0,
124151
transform:"translate(-50%, -50%)",
125152
zIndex: 0,
126-
cursor:"pointer"
153+
cursor:"pointer",
154+
visibility:percent <= 100 ? "visible" : "hidden"
127155
}}
128156
color='red'
129157
size={18}
@@ -149,15 +177,7 @@ const KeyFrames = () => {
149177
}}
150178
/>
151179
</div>
152-
<div className='flex justify-end items-center absolute top-[8px] right-[8px]'>
153-
<b >Frame:</b>
154-
<Input value={currentFrame} type='number'
155-
className='w-[80px] ml-2'
156-
min={1}
157-
step={1}
158-
onChange={e =>parseInt(e.target.value) ? setCurrentFrame(Math.max(parseInt(e.target.value), 1)) : 1}
159-
/>
160-
</div>
180+
161181
</div>
162182
)
163183
}

src/utils/ExportCanvas.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ const DrawComposite = (
3333
} else {
3434
ctx.clearRect(0, 0, width, height);
3535
}
36-
console.log(gl.domElement)
3736
ctx.drawImage(gl.domElement, 0, 0, width, height)
3837

3938
const cbarTickSize = doubleSize ? 36 : 18
@@ -424,8 +423,7 @@ const ExportCanvas = ({show}:{show: boolean}) => {
424423
camera.updateProjectionMatrix();
425424
!(useCustomRes || doubleSize) && invalidate();
426425
}
427-
428-
426+
429427
}
430428
if (useCustomRes || doubleSize){
431429
SetCamera()

0 commit comments

Comments
 (0)