MCPcopy Index your code
hub / github.com/KIMGEONUNG/VideoFrom3D

github.com/KIMGEONUNG/VideoFrom3D @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,431 symbols 4,077 edges 149 files 361 documented · 25%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

📽️ VideoFrom3D 📽️ 3D Scene Video Generation via Complementary Image and Video Diffusion Models

<a href='https://kimgeonung.github.io/' target='_blank'>Geonung Kim</a>&emsp;
<a target='_blank'>Janghyeok Han</a>&emsp;
<a href='https://www.scho.pe.kr/' target='_blank'>Sunghyun Cho</a>&emsp;






POSTECH CG Lab.







<strong>SIGGRAPH-ASIA 2025 Conference </strong>







<h4 align="center">
    <a href="https://kimgeonung.github.io/VideoFrom3D/" target='_blank'>
    <img src="https://img.shields.io/badge/🐳-Project%20Page-blue">
    </a>
    <a href="https://arxiv.org/abs/2509.17985" target='_blank'>
    <img src="https://img.shields.io/badge/arXiv-2509.17985-b31b1b.svg">
    </a>
</h4>

teaser

🔥 Update

  • [2025.10.27] Training code for GGI Module is released.
  • [2025.10.10] Preprocessing code is released.
  • [2025.09.08] The repository is created.

⚙️ Preprocessing

The detailed preprocessing procedure, such as edge and flow extracation, is explained at VideoFrom3D/assets/readme.md. Please refer to this document.

⌨️ Training GGI

The detailed training procedure is explained at VideoFrom3D/training_ggi/readme.md. Please refer to this document.

⌨️ Inference

Install Environment


# create conda environment
conda create --name videofrom3d python=3.10

# install pytorch (use propor cuda version option)
pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu121

# install other packages
pip install -r requirements.txt

Sparse Appearance-guided Sampling (SAG)

Distribution Alignment

For the below example, the trained loras are saved in ./loras


# Options
# --path_image : reference image path(s)
# --pfix       : name of LoRA to be saved 
# --prompt     : uninque identifier prompts for each reference image

# For a single style
accelerate launch --num_processes 1 --main_process_port=4401 sag_distribution_alignment.py \
    --path_image assets/references/spatown.png \
    --pfix spatown

# For multiple styles for each identifier prompt
accelerate launch --num_processes 1 --main_process_port=4401 sag_distribution_alignment.py \
    --path_image assets/references/exterior.png assets/references/interior.png \
    --prompt 'exterior' 'interior' \
    --pfix school

Anchor View Generation

For the below example, we provide assets/sampleA as an example. The generated anchor views are saved in ./assets/sampleA/multiviews/spatown_p-e3b0c442_e400_s075157_r12_ip1

# Options
# --pfix            : target lora name
# --epoch           : target lora epoch
# --target          : target input
# --num_replacement : the number of replacements for sparse appearance (warped image)
# --prompt          : additional prompt for style varation
# --offload         : use lower memory

python sag_generate_anchor_view.py --epoch 400 --target assets/sampleA --pfix spatown --num_replacement 12

Geometry-guided Generative Inbetweening (GGI)

Before started, you first download the checkpoint-1350 in here, and move it in ./checkpoints, e.g. , ./checkpoints/checkpoint-1350. The generated video sequence is saved in assets/sampleA/multiviews/spatown_p-e3b0c442_e400_s051106_r12_ip1/d0.5_e1350_n30

# Options
# --target  : target anchor view path
# --offload : use lower memory

python ggi.py --target assets/sampleA/multiviews/spatown_p-e3b0c442_e400_s051106_r12_ip1

📄 Citation

@inproceedings{kim2025videofrom3d,
  author       = {Geonung Kim and Janghyeok Han and Sunghyun Cho},
  title        = {VideoFrom3D: 3D Scene Video Generation via Complementary Image and Video Diffusion Models},
  booktitle    = {SIGGRAPH Asia 2025 Conference Papers (SA Conference Papers '25)},
  year         = {2025},
  address      = {Hong Kong, Hong Kong},
  publisher    = {ACM},
  pages        = {1--11},
  doi          = {10.1145/3757377.3763871},
  isbn         = {979-8-4007-2137-3/25/12},
  url          = {https://doi.org/10.1145/3757377.3763871}
}

☕️ Acknowledgment

Extension points exported contracts — how you extend this code

ConnectionCallback (Interface)
Callback for Activities to use to initialize their data once the selected preview size is known. [2 implementers]
src/flux/annotator/zoe/zoedepth/models/base_models/midas_repo/mobile/android/app/src/main/java/org/tensorflow/lite/examples/classification/CameraConnectionFragment.java
DrawCallback (Interface)
Interface defining the callback for client classes.
src/flux/annotator/zoe/zoedepth/models/base_models/midas_repo/mobile/android/app/src/main/java/org/tensorflow/lite/examples/classification/customview/OverlayView.java
ResultsView (Interface)
(no doc) [2 implementers]
src/flux/annotator/zoe/zoedepth/models/base_models/midas_repo/mobile/android/app/src/main/java/org/tensorflow/lite/examples/classification/customview/ResultsView.java

Core symbols most depended-on inside this repo

to
called by 205
src/flux/annotator/zoe/zoedepth/models/depth_model.py
append
called by 106
src/flux/annotator/zoe/zoedepth/utils/misc.py
open
called by 42
src/flux/annotator/zoe/zoedepth/data/data_mono.py
encode
called by 28
src/flux/modules/autoencoder.py
update
called by 23
src/flux/annotator/zoe/zoedepth/utils/misc.py
write_next_bytes
called by 19
colmap.py
load
called by 19
src/flux/annotator/midas/midas/base_model.py
write_next_bytes
called by 19
training_ggi/colmap.py

Shape

Method 765
Function 438
Class 221
Enum 4
Interface 3

Languages

Python85%
Java15%
C++1%

Modules by API surface

src/flux/modules/layers.py60 symbols
src/flux/annotator/zoe/zoedepth/models/base_models/midas_repo/mobile/android/app/src/main/java/org/tensorflow/lite/examples/classification/CameraActivity.java48 symbols
src/flux/annotator/zoe/zoedepth/models/base_models/midas_repo/mobile/android/app/src/main/java/org/tensorflow/lite/examples/classification/CameraConnectionFragment.java38 symbols
src/flux/annotator/zoe/zoedepth/data/data_mono.py33 symbols
training_ggi/noise_warp.py31 symbols
src/flux/annotator/zoe/zoedepth/data/transforms.py31 symbols
src/flux/modules/autoencoder.py29 symbols
src/flux/annotator/zoe/zoedepth/models/base_models/midas.py29 symbols
src/flux/annotator/tile/guided_filter.py28 symbols
src/flux/util.py25 symbols
src/flux/annotator/midas/midas/vit.py25 symbols
assets/mk_noise.py25 symbols

For agents

$ claude mcp add VideoFrom3D \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact