File size: 2,189 Bytes
c34ed4d
c965522
c34ed4d
 
 
 
 
0a8f9dd
c34ed4d
 
 
c965522
 
ac327c4
 
 
c965522
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8d0c06f
 
c965522
 
50644d6
 
 
c965522
 
 
 
 
 
 
 
 
 
 
50644d6
 
 
 
 
c965522
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import numpy as np
import gradio as gr
import os
import base64


def get_base64(bin_file):
    with open(bin_file, "rb") as f:
        data = f.read()
    return base64.b64encode(data).decode()


def conr_fn(character_sheets, pose_zip):
    os.system("rm character_sheet/*")
    os.system("rm result/*")
    os.system("rm poses/*")
    os.makedirs("character_sheet", exist_ok=True)
    for i, e in enumerate(character_sheets):
        with open(f"character_sheet/{i}.png", "wb") as f:
            e.seek(0)
            f.write(e.read())
            e.seek(0)
    os.makedirs("poses", exist_ok=True)
    pose_zip.seek(0)
    open("poses.zip", "wb").write(pose_zip.read())
    os.system(f"unzip -d poses poses.zip")
    os.system("sh infer.sh")
    return "output.mp4"


with gr.Blocks() as ui:
    gr.Markdown("CoNR demo")
    gr.Markdown("<a target='_blank' href='https://colab.research.google.com/github/transpchan/Live3D-v2/blob/main/notebook.ipynb'> <img src='https://colab.research.google.com/assets/colab-badge.svg' alt='Open In Colab'/></a> [GitHub](https://github.com/megvii-research/CoNR/)")
    gr.Markdown("Unofficial demo for [CoNR](https://github.com/transpchan/Live3D-v2).")

    with gr.Row():
        # with gr.Column():
            # gr.Markdown("## Parse video")   
            # gr.Markdown("TBD")
        with gr.Column():
            gr.Markdown("## Animate character")
            gr.Markdown("Character sheet")
            character_sheets = gr.File(file_count="multiple")
            gr.Markdown("Pose zip")  # Don't hack
            pose_video = gr.File(file_count="single")

            # os.system("sh download.sh")
            run = gr.Button("Run")
            video = gr.Video()
            run.click(fn=conr_fn, inputs=[character_sheets, pose_video], outputs=video)
            
            gr.Markdown("## Examples")
            sheets = "character_sheet_ponytail_example"
            gr.Examples(fn=conr_fn, inputs=[character_sheets, pose_video], outputs=video,
                        examples=[[[os.path.join(sheets, x) for x in os.listdir(sheets)], "poses_template.zip"]], cache_examples=True, examples_per_page=1)

# ui.launch()
demo = ui
demo.launch()