Skip to content

Latest commit

ย 

History

History
220 lines (160 loc) ยท 7.11 KB

File metadata and controls

220 lines (160 loc) ยท 7.11 KB

Alembic

Alembic์€ 3D ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ Framework์ž…๋‹ˆ๋‹ค. ์†Œ๋‹ˆ์ด๋ฏธ์ง€์›์Šค์™€ ILM์ด ๊ฐ™์ด ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ์ƒํ™ฉ์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐœ์ทŒ : http://www.alembic.io

  • ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ ์ดํฌํ•˜์—ฌ ๋ผ์ดํŒ…, ๋ Œ๋”๋ง ํ•  ๋•Œ
  • ์• ๋‹ˆ๋ฉ”์ด์…˜๋œ ํฌ๋ฆฌ์ณ ๋ฐ์ดํ„ฐ์—์„œ ์˜ท์ด๋‚˜ ํ”ผ๋ถ€๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•  ๋•Œ
  • ์˜ท, ํ”ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์—ฌ ๋ผ์ดํŒ…, ๋ Œ๋”๋ง ํ•  ๋•Œ
  • ์• ๋‹ˆ๋ฉ”์ด์…˜๋œ ๋ฌผ์ฒด๋ฅผ ๋ฌผ๋ฆฌ์—”์ง„์œผ๋กœ ๋„˜๊ธธ ๋•Œ
  • ๋ฌผ๋ฆฌ์—”์ง„์—์„œ ์—ฐ์‚ฐ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ผ์ดํŒ…, ๋ Œ๋”๋ง์œผ๋กœ ๋„˜๊ธธ ๋•Œ

๋งˆ์•ผ๊ฐ™์€ ํˆด์—์„œ ์ด๋ฏธ abc ํŒŒ์ผ์„ export ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์šธ nuke์—์„œ๋Š” abcํŒŒ์ผ์„ import ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

abc๋ฅผ ์ง€์›ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ

  • Maya
  • Katana
  • Houdini
  • 3dsmax
  • Blender
  • Unreal
  • Nuke
  • Gaffer

Alembic ์ปดํŒŒ์ผํ•˜๊ธฐ

์†Œ์Šค์ฝ”๋“œ : https://github.com/alembic/alembic

abc๋Š” Ogawa, Hdf5 ๋‘๊ฐ€์ง€ ํฌ๋ฉง์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ต์œก์˜ ํŽธ์˜์„ฑ์„ ์œ„ํ•ด์„œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ Ogawa(๊ธฐ๋ณธ๊ฐ’) ํ˜•์‹๋งŒ ์ง€์›ํ•˜๋„๋ก ์ปดํŒŒ์ผ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Ogawa ํŒŒ์ผ์€ HDF5 ๋ณด๋‹ค ์šฉ๋Ÿ‰์ด ์ž‘๊ณ  ๋” ๋น ๋ฅด๊ฒŒ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. HDF5๋Š” ์˜ˆ์ „์— abc์—์„œ ์‚ฌ์šฉํ•˜๋˜ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. IlmBase ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ปดํŒŒ์ผ ์ค‘๊ฐ„์— ์‚ฌ์šฉ๋˜๋ฉฐ OpenEXR ์ปดํŒŒ์ผ ํ•  ๋•Œ ์ด๋ฏธ ์ƒ์„ฑํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ  : ๋ธ”๋ Œ๋”๋Š” HDF5๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ์ค‘๊ฐ„์— libatomic ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ๋ฆฌ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด๋‘ก๋‹ˆ๋‹ค.

$ yum install devtoolset-6-libatomic-devel -y
$ cd ~/app
$ git clone https://github.com/alembic/alembic alembic_src
$ alembic_src
$ git tag
$ git checkout 1.7.10
$ cd ..
$ mkdir alembic_build
$ mkdir alembic
$ cd alembic_build
$ scl enable devtoolset-6 bash
$ ~/app/cmake-3.13.3/bin/cmake ../alembic_src -DILMBASE_ROOT=$HOME/app/IlmBase -DALEMBIC_SHARED_LIBS=OFF -DUSE_HDF5=OFF -DALEMBIC_LIB_USES_TR1=ON -DCMAKE_INSTALL_PREFIX=$HOME/app/alembic
$ make -j2
$ make install

์ปดํŒŒ์ผ์ด ๋˜๋ฉด ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • abcdiff

    2๊ฐœ์˜ abc ํŒŒ์ผ์„ ์ž…๋ ฅํ•ด์„œ ๋‹ค๋ฅธ ๋ถ€๋ถ„๋งŒ abcํŒŒ์ผ๋กœ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ์—†๋‹ค๋ฉด No differences detected ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

    $ abcdiff input1.abc input2.abc output.abc
  • abcecho

    .abcํŒŒ์ผ์˜ ๋””ํ…Œ์ผํ•œ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    $ abcecho box.abc
    AbcEcho for Alembic 1.7.10 (built Dec  5 2018 17:30:01)
    file written by: Blender
    using Alembic : Alembic 1.7.8 (built Sep 10 2018 16:59:10)
    written on : Wed Dec  5 19:56:39 2018
    user description : untitled
    
    ScalarProperty name=.childBnds;interpretation=box;datatype=float64_t[6];arraysize=6;numsamps=250
    Object name=/Cube
    CompoundProperty name=.xform;schema=AbcGeom_Xform_v3
    ScalarProperty name=.inherits;interpretation=;datatype=bool_t;arraysize=1;numsamps=250
    ScalarProperty name=.ops;interpretation=;datatype=uint8_t;arraysize=1;numsamps=250
    ScalarProperty name=.vals;interpretation=;datatype=float64_t[16];arraysize=16;numsamps=250
    ScalarProperty name=visible;interpretation=;datatype=int8_t;arraysize=1;numsamps=250
    Object name=/Cube/CubeShape
    CompoundProperty name=.geom;schema=AbcGeom_PolyMesh_v1
    ScalarProperty name=.selfBnds;interpretation=box;datatype=float64_t[6];arraysize=6;numsamps=1
    ArrayProperty name=P;interpretation=point;datatype=float32_t[3];arraysize=8;numsamps=1
    ArrayProperty name=.faceIndices;interpretation=;datatype=int32_t;arraysize=24;numsamps=1
    ArrayProperty name=.faceCounts;interpretation=;datatype=int32_t;arraysize=6;numsamps=1
    CompoundProperty name=.userProperties;schema=
    ScalarProperty name=meshtype;interpretation=;datatype=bool_t;arraysize=1;numsamps=1
    CompoundProperty name=.arbGeomParams;schema=
    CompoundProperty name=uv;schema=
    ArrayProperty name=.vals;interpretation=vector;datatype=float32_t[2];arraysize=14;numsamps=1
    ArrayProperty name=.indices;interpretation=;datatype=uint32_t;arraysize=24;numsamps=1
    ArrayProperty name=N;interpretation=normal;datatype=float32_t[3];arraysize=8;numsamps=1
    
  • abcechobounds

    .abc ํŒŒ์ผ ๋‚ด๋ถ€ ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค์˜ ์‚ฌ์ด์ฆˆ ํฌ๊ธฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ช…๋ น์–ด ์ž…๋‹ˆ๋‹ค.

    $ abcechobounds box.abc

    Output:

    /Cube/CubeShape (-1 -1 -1) (1 1 1)
    / (-1 -1 -1) (1 1 1)
    
  • abcls

    .abc ํŒŒ์ผ ๋‚ด๋ถ€์— ์žˆ๋Š” ์˜ค๋ธŒ์ ํŠธ ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    $ abcls box.abc

    Output:

    Cube
  • abcstitcher

    ๊ฐ ํ”„๋ ˆ์ž„๋งˆ๋‹ค ์—ฐ์‚ฐ๋œ .abc ํŒŒ์ผ์„ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ .abcํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์˜์—ญ์ด ๊ฒน์น˜๋ฉด ERROR: overlapping frame range between ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ๊ฐœ๋ณ„๋กœ bake๋œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํŒŒ์ผ์„ ํ•ฉ์น  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

    $ abcstitcher output.abc input.0001.abc input.0002.abc input.0003.abc ...
  • abctree

    .abc ํŒŒ์ผ์˜ ๊ตฌ์กฐ๋ฅผ Tree ํ˜•ํƒœ๋กœ ๊ทธ๋ ค์ฃผ๋Š” ๋ช…๋ น์–ด ์ž…๋‹ˆ๋‹ค.

    $ abctree box.abc

    Output:

    ABC
        --Cube
            --CubeShape

abc๋ทฐ์–ด

3D ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์—†๋”๋ผ๋„ .abc ํŒŒ์ผ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์—ญํ• ์„ ํ•˜๋Š” abcview๋ฅผ ์ปดํŒŒ์ผํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • usd๋ฅผ ์ปดํŒŒ์ผํ•˜๋ฉด usdview๊ฐ€ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. usdview์—์„œ๋Š” abcํŒŒ์ผ๋„ ๊ฐ™์ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Gaffer ๋ฅผ ์„ค์น˜ํ•ด๋„ abc๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‰ดํฌ์—์„œ๋„ abc๋ฅผ ๋กœ๋”ฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
$ usdview input.abc

boost ์ปดํŒŒ์ผ

OpenGL ์„ค์น˜

sudo yum install freeglut-devel -y

Python library ์„ค์น˜

sudo yum install python-devel -y

abcview ์ปดํŒŒ์ผ (์•„์ง ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์Œ.)

์ฐธ๊ณ  : usdview์—๋Š” ์ด๋ฏธ abcํŒŒ์ผ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ usd๊ฐ€ ์ปดํŒŒ์ผ์ด ๋” ์ž˜๋˜์–ด์„œ abcview ๋Œ€์‹  usdview๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์†Œ์Šค์ฝ”๋“œ : https://github.com/alembic/abcview

์ปดํŒŒ์ผ์ด ์•„์ง ๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ธฐ์กด์— ์ปดํŒŒ์ผํ•œ ๋ฆฌ์ŠคํŠธ์ค‘ ๋‹ค ํ™œ์„ฑํ™” ํ–์—ฌ ์ปดํŒŒ์ผ ํ•ด๋ณด๊ธฐ.

$ cd ~/app
$ git clone https://github.com/alembic/abcview abcview_src
$ mkdir abcview
$ mkdir abcview_build
$ cd abcview_build
$ scl enable devtoolset-6 bash
$ cmake ../abcview_src -DBOOST_ROOT=$HOME/app/boost_1_66_0 -DILMBASE_ROOT=$HOME/app/IlmBase -DALEMBIC_LIB=$HOME/app/alembic/lib -DALEMBIC_INCLUDE_PATH=$HOME/app/alembic/incloud -DGLEW_INCLUDE_DIR=/usr/include -DGLEW_LIBRARY=/usr/lib64 -DUSE_PYTHON=OFF -DCMAKE_INSTALL_PREFIX=$HOME/app/abcview 

-DPYTHON_ROOT=/usr/lib64/python2.7/config -DPYTHON_LIBRARY=/usr/lib64/python2.7/config/libpython2.7.so -DPYTHON_INCLUDE_DIR=/usr/include/python2.7

$ make -j2
$ make install
$ make help

์‹ค์Šต

  • 3Dํˆด์„ ์ด์šฉํ•ด์„œ abc ํŒŒ์ผ ์ œ์ž‘.
  • ๋‰ดํฌ์— ๋กœ๋”ฉํ•ด๋ณด๊ธฐ
  • ๋ช…๋ น์–ด ์‹ค์Šต
  • centos/script์— ํ•„์š”ํ•œ ์ฝ”๋“œ ์„ค์น˜ ์ž๋™ํ™” ์ถ”๊ฐ€ํ•˜๊ธฐ