Limetime's TimeLine
article thumbnail
반응형

환경구성

Mediapipe plugin 다운로드 및 압축풀기

MediaPipeUnityPlugin v0.11.0
Release Note : MediaPipeUnityPlugin-Releases

build.py 실행 환경 구성 및 실행

Homebrew 설치

Homebrew

python 및 numpy 설치

brew install python
export PATH=$PATH:"$(brew --prefix)/opt/python/libexec/bin"

# Python version must be >= 3.9.0
python --version
# Python 3.9.x

pip3 install --user six numpy
 

anaconda 사용 중이라면

conda create -n handUnityPlugin python=3.9
conda activate handUnityPlugin

#--- (handUnityPlugin) 상태인지 확인!! ---#

# anaconda 위치 : /Users/계정명/anaconda3/envs/handUnityPlugin/bin
export PATH=$PATH:"/Users/계정명/anaconda3/envs/handUnityPlugin/bin"
echo $PATH # PATH에 잘 등록되었는지 확인
pip3 install --user six numpy
 

Bazelisk 설치

brew install bazelisk
 

Nuget 설치

/usr/sbin/softwareupdate --install-rosetta # A입력하라고 했던 것 같다.
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
arch -x86_64 /usr/local/Homebrew/bin/brew install nuget
 

Xcode 설치

앱스토어에서 Xcode 설치

sudo xcodebuild -license # if not agreed to the license yet, 설치할 때 동의 했으면 안해도 되는듯?
sudo xcode-select -s /Applications/Xcode.app # Mac이랑 ios 설치할래? 물어보는거 했으면 안해도 되는듯?
xcode-select --install
 

WORKSPACE 수정

C:\MediaPipeUnityPlugin\WORKSPACE

  • 수정 전 (파일 이름이 rules_cc-master  rules_cc-main으로 바뀌기도 했음)
http_archive(
    name = "rules_cc",
        strip_prefix = "rules_cc-master",
    urls = ["https://github.com/bazelbuild/rules_cc/archive/master.zip"],
}
 
  • 수정 후
http_archive(
    name = "rules_cc",
    strip_prefix = "rules_cc-8bb0eb5c5ccd96b91753bb112096bb6993d16d13",
    urls = ["https://github.com/bazelbuild/rules_cc/archive/8bb0eb5.zip"],
)
 

builde.py 수정

C:\MediaPipeUnityPlugin\build.py

  • argparse.BooleanOptionalAction  ‘store_true’로 수정
    build_command_parser = subparsers.add_parser('build', help='Build and install native libraries')
    build_command_parser.add_argument('--desktop', choices=['cpu', 'gpu'])
    build_command_parser.add_argument('--android', choices=['armv7', 'arm64', 'fat'])
    build_command_parser.add_argument('--android_ndk_api_level', type=int, choices=range(16, 31))
    build_command_parser.add_argument('--ios', choices=['arm64'])
    build_command_parser.add_argument('--resources', action='store_true', default=True)
    build_command_parser.add_argument('--analyzers', action='store_true', default=False, help='Install Roslyn Analyzers')
    build_command_parser.add_argument('--compilation_mode', '-c', choices=['fastbuild', 'opt', 'dbg'], default='opt')
    build_command_parser.add_argument('--opencv', choices=['local', 'cmake', 'cmake_static', 'cmake_dynamic'], default='local', help='Decide to which OpenCV to link for Desktop native libraries')
    build_command_parser.add_argument('--solutions', nargs='+',
        choices=['face_detection', 'face_mesh', 'iris', 'hands', 'pose', 'holistic', 'selfie_segmentation', 'hair_segmentation', 'object_detection', 'box_tracking', 'instant_motion_tracking', 'objectron'])
    build_command_parser.add_argument('--linkopt', '-l', action='append', help='Linker options')
    build_command_parser.add_argument('--apple_bitcode', action='store_true', default=True, help='Embed bitcode to iOS Framework')
    build_command_parser.add_argument('--macos_universal', action='store_true', default=False, help='Build a universal library')
    build_command_parser.add_argument('--bazel_startup_opts', action='append', help='Bazel startup options')
    build_command_parser.add_argument('--bazel_build_opts', action='append', help='Bazel startup options')
    build_command_parser.add_argument('--verbose', '-v', action='count', default=0)

    clean_command_parser = subparsers.add_parser('clean', help='Clean cache files')
    clean_command_parser.add_argument('--bazel_startup_opts', action='append', help='Bazel startup options')
    clean_command_parser.add_argument('--verbose', '-v', action='count', default=0)

    uninstall_command_parser = subparsers.add_parser('uninstall', help='Remove installed files')
    uninstall_command_parser.add_argument('--desktop', action='store_true', default=True)
    uninstall_command_parser.add_argument('--android', action='store_true', default=True)
    uninstall_command_parser.add_argument('--ios', action='store_true', default=True)
    uninstall_command_parser.add_argument('--resources', action='store_true', default=True)
    uninstall_command_parser.add_argument('--protobuf', action='store_true', default=True)
    uninstall_command_parser.add_argument('--analyzers', action='store_true', default=True)
    uninstall_command_parser.add_argument('--verbose', '-v', action='count', default=0)
 

build.py 실행

python build.py build --desktop cpu --opencv cmake --macos_universal -vv
 

빌드

Hand Tracking 위주로 진행하였다.

Bootstrap Asset Loader Type - Streaming Asset

원하는 솔루션의 Scene을 선택하여 Bootstrap 스크립트의 Asset Loader Type을 Streaming Asset으로 변경해준다.

빌드 오류

빌드가 되지 않는 경우 참고. 특히 Not Found Mediapipe
Release Note : MediaPipeUnityPlugin-Releases

방법 1. (안되더라)

com.github.homuler.mediapipe-0.11.0을 다운로드 받고 유니티에서 Windows - Package Manager - Add package from tarball...을 선택하여 설치해준다.

방법 2. (O)

방법 1을 따라해도 되지 않는 경우, com.github.homuler.mediapipe-0.11.0.tgz를 압축풀고 MediaPipeUnityPlugin-0.11.0\Packages\com.github.homuler.mediapipe\Runtime\Plugins(Plugins 폴더)를 복사하여 유니티의 똑같은 경로에 붙여넣기 한다.

배운점

Assets\StreamingAssets

Assets폴더에 StreamingAssets이 있어야 한다. 없으면 com.github.homuler.mediapipe-0.11.0.tgz를 풀어서 복붙해야 한다.

참고

homuler MediaPipeUnityPlugin
homuler MediaPipeUnityPlugin Install Guide
내가 수정한 코드

반응형
profile

Limetime's TimeLine

@Limetime

포스팅이 좋았다면 "공감❤️" 또는 "구독👍🏻" 해주세요!