Blender: Modal Solverの仕組み (解析中)
Modal Solver
モーショントラッキングのSolverには2種類あり、Solveのオプションで、Tripodにチェックを入れたらModal Solverが使用される。 三脚に固定しているということは、カメラの位置は固定という前提条件が付く。 つまり、solverではカメラのrotationだけをsolveすれば良いことになる。
void ModalSolver(const Tracks& tracks, EuclideanReconstruction* reconstruction, ProgressUpdateCallback* update_callback)
アルゴリズム
lens distortionの設定がされている場合、lens distortionを補正し、トラッキングマーカーを正規化する
2Dのトラッキングマーカーの位置を3Dの球面上にマッピングする。
現在と前のフレームにおけるpoint cloudを計算し、そこからカメラのdelta rotation matrixを計算する。
delta rotation matrixをquaternionに変換する。
Ceresでquaternionの誤差を最小化する。
quaternionをrotation matrixに変換し、それを解析結果のカメラのrorationとしてセットする。
Ceres
TODO
球面上での深度調整をどうやっているか?
Fusion Studio 17でCinema EOS c300 Mark IIのフッテージを読み込めるようにする
はじめに
最新版のFusion Studio 17で、DaVinci Resolve Studioのアクティベーションコードで起動できるようになったとのことで、Fusion Studio 17を導入しました。
しかし、Fusion Studio 17は、デフォルトではCinema EOS c300 Mark IIのフッテージが読み込めません。 DaVinci Resolve Studioでは読み込めるのに不思議です。
FFMpegをインストールすればフッテージを読み込めるようになるようなので試してみました。
なお、導入環境はmacOS Big Sur 11.2.3です。
手順
HomebrewでFFMpegをインストールします。 XCodeのコマンドラインツールも必要なので、先にインストールしておきます。
% xcode-select --install
% brew install ffmpeg
これで完了です。 Fusion Studioを起動します。
c300 Mark IIのフッテージを読み込みます。 読み込めるようになりました。 Inspector > Format を確認すると、「FFMPEG Assorted formats」と表示されています。
以前は、Path Mapの設定が必要だったようですが、このバージョンでは自動的に認識されました。
Hello Arnold Python API
はじめに
今回は、Blenderから外れますが、ArnoldのPython APIを扱うメモです。 シンプルな球体をレンダリングし、JPEGで出力する所まで動かします。
コード
こちらの記事にあるコードを使います。
from arnold import * AiBegin() AiMsgSetConsoleFlags(AI_LOG_INFO) AiMsgInfo('Hello World') AiEnd()
実行
環境変数PYTHONPATHにArnold SDKのPython APIのパスをセットしておきます。 それから上記Pythonコードを実行します。 詳細なログが出力され、「Hello World」も出力されました。
% export PYTHONPATH=/Applications/Autodesk/Arnold-6.0.4.1-darwin/python % python hello_world.py dyld: warning, LC_RPATH @executable_path/. in /Applications/Autodesk/Arnold-6.0.4.1-darwin/bin/libai.dylib being ignored in restricted program because of @executable_path (Codesign main executable with Library Validation to allow @ paths) dyld: warning, LC_RPATH @rpath in /Applications/Autodesk/Arnold-6.0.4.1-darwin/bin/./libAdpSDKWrapper-arnold.dylib being ignored in restricted program because it is a relative path dyld: warning, LC_RPATH @rpath in /Applications/Autodesk/Arnold-6.0.4.1-darwin/bin/./libAdpSDKWrapper-arnold.dylib being ignored in restricted program because it is a relative path dyld: warning, LC_RPATH @rpath in /Users/yoshinori_sano/Library/Application Support/Autodesk/ADPSDK/bin/AdpSDKCore.bundle/Contents/MacOS/AdpSDKCore being ignored in restricted program because it is a relative path 00:00:00 66MB | log started Tue Mar 9 09:12:33 2021 00:00:00 66MB | Arnold 6.0.4.1 [e641c6ed] darwin clang-9.0.1 oiio-2.2.1 osl-1.11.6 vdb-4.0.0 clm-1.1.2.132 rlm-12.4.2 2020/09/25 14:42:01 00:00:00 66MB | running on pc.local, pid=13396 00:00:00 66MB | 1 x Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz (6 cores, 12 logical) with 32768MB 00:00:00 66MB | macOS 10.16.0, Darwin kernel 20.2.0 00:00:00 66MB | soft limit for open files raised from 2560 to 10238 00:00:00 66MB | 00:00:00 66MB | loading plugins from /Applications/Autodesk/Arnold-6.0.4.1-darwin/bin/../plugins ... dyld: warning, LC_RPATH @executable_path/. in /Applications/Autodesk/Arnold-6.0.4.1-darwin/bin/libai.dylib being ignored in restricted program because of @executable_path (Codesign main executable with Library Validation to allow @ paths) 00:00:00 66MB | cryptomatte.dylib: cryptomatte uses Arnold 6.0.4.1 00:00:00 66MB | cryptomatte.dylib: cryptomatte_filter uses Arnold 6.0.4.1 00:00:00 66MB | cryptomatte.dylib: cryptomatte_manifest_driver uses Arnold 6.0.4.1 dyld: warning, LC_RPATH @executable_path/. in /Applications/Autodesk/Arnold-6.0.4.1-darwin/bin/libai.dylib being ignored in restricted program because of @executable_path (Codesign main executable with Library Validation to allow @ paths) 00:00:00 68MB | usd_proc.dylib: usd uses Arnold 6.0.4.1 dyld: warning, LC_RPATH @executable_path/. in /Applications/Autodesk/Arnold-6.0.4.1-darwin/bin/libai.dylib being ignored in restricted program because of @executable_path (Codesign main executable with Library Validation to allow @ paths) 00:00:00 68MB | alembic_proc.dylib: alembic uses Arnold 6.0.4.1 00:00:00 68MB | loaded 5 plugins from 3 lib(s) in 0:00.02 | Hello World | | releasing resources | Arnold shutdown
BtoA初期のコードから移植し球体をレンダリング
前回書いた記事でBtoAを紹介しました。
BtoA初期のコードに球体をレンダリングするコードがあるので、その部分を抽出してレンダリングしてみます。 少し修正して、グリーンの球体になるようにしてみます。
参考にしたコード: https://github.com/lunadigital/btoa/blob/ece49981dfd55b8ae0e2ccb2cb9bbb43f1ffb00b/engine/__init__.py
import arnold arnold.AiBegin() sphere = arnold.AiNode("sphere") arnold.AiNodeSetStr(sphere, "name", "mysphere") arnold.AiNodeSetVec(sphere, "center", 0, 4, 0) arnold.AiNodeSetFlt(sphere, "radius", 4) shader = arnold.AiNode("standard_surface") arnold.AiNodeSetStr(shader, "name", "redShader") arnold.AiNodeSetRGB(shader, "base_color", 0.0, 1.00, 0.0) # 修正 arnold.AiNodeSetFlt(shader, "specular", 0.05) arnold.AiNodeSetPtr(sphere, "shader", shader) camera = arnold.AiNode("persp_camera") arnold.AiNodeSetStr(camera, "name", "Camera") arnold.AiNodeSetVec(camera, "position", 0, 10, 35) arnold.AiNodeSetVec(camera, "look_at", 0, 3, 0) arnold.AiNodeSetFlt(camera, "fov", 45) light = arnold.AiNode("point_light") arnold.AiNodeSetStr(light, "name", "pointLight") arnold.AiNodeSetVec(light, "position", 15, 30, 15) arnold.AiNodeSetFlt(light, "intensity", 4500) arnold.AiNodeSetFlt(light, "radius", 4) options = arnold.AiUniverseGetOptions() arnold.AiNodeSetInt(options, "AA_samples", 8) arnold.AiNodeSetInt(options, "xres", 1920) # 修正 arnold.AiNodeSetInt(options, "yres", 1080) # 修正 arnold.AiNodeSetInt(options, "GI_diffuse_depth", 4) arnold.AiNodeSetPtr(options, "camera", camera) driver = arnold.AiNode("driver_jpeg") arnold.AiNodeSetStr(driver, "name", "jpegDriver") arnold.AiNodeSetStr(driver, "filename", "myFirstRender.jpg") filter = arnold.AiNode("gaussian_filter") arnold.AiNodeSetStr(filter, "name", "gaussianFilter") outputs = arnold.AiArrayAllocate(1, 1, arnold.AI_TYPE_STRING) arnold.AiArraySetStr(outputs, 0, "RGBA RGBA gaussianFilter jpegDriver") arnold.AiNodeSetArray(options, "outputs", outputs) arnold.AiRender(arnold.AI_RENDER_MODE_CAMERA) arnold.AiEnd()
コードを実行すると、以下の球体がレンダリングされました。
Blender to Arnold: 開発初期のコード解析から見えてくること
はじめに
Luna Digital社が中心となって、BlenderからArnoldを使えるようにするアドオン(BtoA)を開発中です。 まだアルファ版の段階です。
BtoAの開発が開始された初期の頃のコードを解析した結果、以下が分かりました。
- レンダリング対象のモデル、カメラ、照明などをハードコードしてテスト的にレンダリングしていた
- ArnoldのPython APIを抽象化するコードは、まだ存在せず、Python APIをそのまま使用していた
つまり、ArnoldのPython APIをはじめて触れる開発者にとって、理解しやすいコードになっていました。
今回は、BtoAの開発が開始された最初の頃のコードを復元して、そのコードで画像をレンダリングしてみます。 最後に、BtoA開発で必要になる作業とは何なのかも考えてみます。
BtoAのインストール
BtoAは、現状Blender 2.8系しかサポートされていないようです。 そこで、2.83 LTS版を使用することにします。 githubからコードをcloneして、Blenderからアドオンとして認識できるようにシンボリックリンクを作成します。
% mkdir ~/projects % cd ~/projects % git clone https://github.com/lunadigital/btoa.git % ln -s /Users/yoshinori_sano/projects/btoa /Users/yoshinori_sano/Library/Application\ Support/Blender/2.80/scripts/addons/btoa
Arnold SDKをインストールし、BtoAの設定画面を開いてArnold SDKのパスを指定します。
BtoAのコードリーディング
BtoAは、アルファ版でまだコミット数も少ないです。 開発初期のコミットを順番に読んでいくと、いきなり途中段階のコードがgitに追加されたのではなく、少しずつ順番に開発されていることが分かりました。
このコミットで、ArnoldのPython API経由でレンダリングする実験的なコードが追加されました。 github.com
そこで、このコードに遡って、コミットされた当時の状態を再現してみることにします。
% git checkout ece49981dfd55b8ae0e2ccb2cb9bbb43f1ffb00b
Blenderを再起動して、Render Properties > Render Engine > Arnoldに変更します。 そして、Render > Render Image を実行します。 ですが、期待通りに動きませんでした。
コミットログにはホームディレクトリにレンダリング結果が書き込まれるとあるのですが、ローカル環境では権限の関係でうまく書き出されなかったので、/tmp以下に書き込まれるように修正しました。
% git diff diff --git a/engine/__init__.py b/engine/__init__.py index aa00af9..9e0ebd3 100644 --- a/engine/__init__.py +++ b/engine/__init__.py @@ -58,7 +58,7 @@ class ArnoldRenderEngine(bpy.types.RenderEngine): driver = arnold.AiNode("driver_jpeg") arnold.AiNodeSetStr(driver, "name", "jpegDriver") - arnold.AiNodeSetStr(driver, "filename", "myFirstRender.jpg") + arnold.AiNodeSetStr(driver, "filename", "/tmp/myFirstRender.jpg") filter = arnold.AiNode("gaussian_filter") arnold.AiNodeSetStr(filter, "name", "gaussianFilter")
もう一度同じ操作をすると、以下のファイルがレンダリングされました。
コードの詳細
engine/init.py を読んでいきます。
Blenderに新たなレンダリングエンジンを認識させるには、bpy.types.RenderEngine
を継承したクラスを実装すれば良いようです。
# For more info, visit: # https://docs.blender.org/api/current/bpy.types.RenderEngine.html class ArnoldRenderEngine(bpy.types.RenderEngine):
コードにコメントされている以下のURLには、bpy.types.RenderEngine
の継承のやり方の解説が書かれています。
docs.blender.org
Blenderでレンダリングを実行すると、このrender()
が呼ばれます。
depsgraph
から、レンダリング対象の幅と高さを取得します。
その後は、ArnoldのPython APIを使って、Arnoldがレンダリングに必要なモデル情報のジオメトリ、そのジオメトリのマテリアル、カメラ、照明などを構築していきます。
その他、レンダリングに必要な情報をセットした後、arnold.AiRender()
でレンダリングが実行されます。
class CustomRenderEngine(bpy.types.RenderEngine): [...] def render(self, depsgraph): scene = depsgraph.scene scale = scene.render.resolution_percentage / 100.0 self.size_x = int(scene.render.resolution_x * scale) self.size_y = int(scene.render.resolution_y * scale) arnold.AiBegin() sphere = arnold.AiNode("sphere") arnold.AiNodeSetStr(sphere, "name", "mysphere") arnold.AiNodeSetVec(sphere, "center", 0, 4, 0) arnold.AiNodeSetFlt(sphere, "radius", 4) shader = arnold.AiNode("standard_surface") arnold.AiNodeSetStr(shader, "name", "redShader") arnold.AiNodeSetRGB(shader, "base_color", 1, 0.02, 0.02) arnold.AiNodeSetFlt(shader, "specular", 0.05) arnold.AiNodeSetPtr(sphere, "shader", shader) camera = arnold.AiNode("persp_camera") arnold.AiNodeSetStr(camera, "name", "Camera") arnold.AiNodeSetVec(camera, "position", 0, 10, 35) arnold.AiNodeSetVec(camera, "look_at", 0, 3, 0) arnold.AiNodeSetFlt(camera, "fov", 45) light = arnold.AiNode("point_light") arnold.AiNodeSetStr(light, "name", "pointLight") arnold.AiNodeSetVec(light, "position", 15, 30, 15) arnold.AiNodeSetFlt(light, "intensity", 4500) arnold.AiNodeSetFlt(light, "radius", 4) options = arnold.AiUniverseGetOptions() arnold.AiNodeSetInt(options, "AA_samples", 8) arnold.AiNodeSetInt(options, "xres", self.size_x) arnold.AiNodeSetInt(options, "yres", self.size_y) arnold.AiNodeSetInt(options, "GI_diffuse_depth", 4) arnold.AiNodeSetPtr(options, "camera", camera) driver = arnold.AiNode("driver_jpeg") arnold.AiNodeSetStr(driver, "name", "jpegDriver") arnold.AiNodeSetStr(driver, "filename", "/tmp/myFirstRender.jpg") filter = arnold.AiNode("gaussian_filter") arnold.AiNodeSetStr(filter, "name", "gaussianFilter") outputs = arnold.AiArrayAllocate(1, 1, arnold.AI_TYPE_STRING) arnold.AiArraySetStr(outputs, 0, "RGBA RGBA gaussianFilter jpegDriver") arnold.AiNodeSetArray(options, "outputs", outputs) arnold.AiRender(arnold.AI_RENDER_MODE_CAMERA) arnold.AiEnd() [...]
結局、BtoA開発で必要になる作業とは何なのか?
Blenderでモデリングされたジオメトリ、マテリアル、カメラ、照明などレンダリングに必要な情報を、Arnoldが理解できるデータ構造やAPI呼び出しの形にひたすら整えて行く。 この作業が、BtoA開発の大半で必要な作業になると予想します。
例えば、メッシュのレンダリングは以下で実装されました。ここでも、Blender上にあるシーンのメッシュ情報をArnoldのデータ構造やAPI呼び出しに対応付けています。
それらに加えて、ユーザーからArnoldの機能をアクセスするための、UIの実装ももちろん必要になると思います。
参考情報
ArnoldをPython APIから使用する際に必要になるリファレンスです。
APIリファレンス
このBlogによると、Arnold SDKのC++ APIリファレンスを参照とのことです。APIは基本的に一対一対応しているそうです。
For documentation, you use the Arnold SDK documentation. It’s for the C++ API, but the Python API is basically a one-to-one wrapper around the C++ API.
ノードリファレンス
ArnoldのPython APIでノードを構築していく際、こちらのノードリファレンスが参考になります。
例えば、上記のパースペクティブありのカメラ(persp_camera
)の仕様は以下にあります。
開発の際は、この仕様書に記載されているパラメータを参照しながら、ノードにセットしていくことになります。
Blender: はじめてのビルドエラーの解決
はじめに
最新のコードをビルドしようとすると、エラーが発生してビルドできなくなりました。 今までmasterの最新のコードでうまくビルドできていました。 masterはunstableなので、これからも同様の問題が起きそうです。 解決までの記録を残します。
使用したコード
master (2.93.0)を使用しました。 https://developer.blender.org/rBbcd369c3c12e48dd2be544fbd3ebed2ce8b4c1fb
エラーの内容
ビルドすると、以下のエラーが発生します。 Clangは、ローカルで使用できているので、どうもClangの検出がうまくできていないようです。
% make debug Configuring Blender in "/Users/yoshinori_sano/blender-git/build_darwin_debug" ... -- Detected OS X 11.1 and Xcode 12.4 at /Applications/Xcode.app/Contents/Developer -- SDKs Directory: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform//Developer/SDKs -- Detected OSX_SYSROOT: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform//Developer/SDKs/MacOSX11.1.sdk -- Could NOT find sse2neon (missing: SSE2NEON_INCLUDE_DIR) -- Could NOT find Clang (missing: _CLANG_LIBRARIES) CMake Error at build_files/cmake/platform/platform_apple.cmake:339 (message): Clang not found. Call Stack (most recent call first): CMakeLists.txt:916 (include) -- Configuring incomplete, errors occurred! See also "/Users/yoshinori_sano/blender-git/build_darwin_debug/CMakeFiles/CMakeOutput.log". See also "/Users/yoshinori_sano/blender-git/build_darwin_debug/CMakeFiles/CMakeError.log". make: *** [all] Error 1
一時的な解決
このコミットでClangのチェックコードが追加されていました。 https://developer.blender.org/rB4fb0c83c1c8529b61d38d8a409caf58d05a53bd9
そこで、messageのFATAL_ERRORを踏まないようにコメントアウトすると、ビルドできるようになりました。
diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake index 31302bf1100..1e0b2db6d81 100644 --- a/build_files/cmake/platform/platform_apple.cmake +++ b/build_files/cmake/platform/platform_apple.cmake @@ -336,7 +336,7 @@ if(WITH_LLVM) if(WITH_CLANG) find_package(Clang) if(NOT CLANG_FOUND) - message(FATAL_ERROR "Clang not found.") + #message(FATAL_ERROR "Clang not found.") endif() endif()
問題の探求と解決
Blenderの開発者によって問題はすでに発見、解決されていました。
コミットログによると、外部ライブラリの更新作業が前後したことで、ビルドができなくなったようです。
こちらにも、Clang関係のファイルがSubversionに追加されているのが確認できました。 https://developer.blender.org/rBL62576
commit 9a1b29e16c216c2827f28214d4f7af4ee072beec Author: Sebastián Barschkis <sebbas@sebbas.org> Date: Wed Feb 24 20:18:07 2021 +0100 CMake: Removed temporarily disabled clang block Was disabled in rBc778fd981e63. Libraries have been updated in rBL62576. diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake index c2e46206046..31302bf1100 100644 --- a/build_files/cmake/platform/platform_apple.cmake +++ b/build_files/cmake/platform/platform_apple.cmake @@ -333,13 +333,12 @@ if(WITH_LLVM) if(NOT LLVM_FOUND) message(FATAL_ERROR "LLVM not found.") endif() -# Temporarily removing clang - new libs still need to be committed -# if(WITH_CLANG) -# find_package(Clang) -# if(NOT CLANG_FOUND) -# message(FATAL_ERROR "Clang not found.") -# endif() -# endif() + if(WITH_CLANG) + find_package(Clang) + if(NOT CLANG_FOUND) + message(FATAL_ERROR "Clang not found.") + endif() + endif() endif() commit c778fd981e636d99f819806471e2ee83a3cb76c0 Author: Sebastián Barschkis <sebbas@sebbas.org> Date: Wed Feb 24 16:12:50 2021 +0100 CMake: Temporarily removing find clang block New libs have not landed in the SVN repository. Once they are up, this commit will be reverted. diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake index 31302bf1100..c2e46206046 100644 --- a/build_files/cmake/platform/platform_apple.cmake +++ b/build_files/cmake/platform/platform_apple.cmake @@ -333,12 +333,13 @@ if(WITH_LLVM) if(NOT LLVM_FOUND) message(FATAL_ERROR "LLVM not found.") endif() - if(WITH_CLANG) - find_package(Clang) - if(NOT CLANG_FOUND) - message(FATAL_ERROR "Clang not found.") - endif() - endif() +# Temporarily removing clang - new libs still need to be committed +# if(WITH_CLANG) +# find_package(Clang) +# if(NOT CLANG_FOUND) +# message(FATAL_ERROR "Clang not found.") +# endif() +# endif() endif()
そこで、外部ライブラリの更新をローカルに取り込んでみます。 Clang関係のファイルが追加されました。 改めて、makeしてみると、無事ビルドエラーが解決しました。
% make update python3 ./build_files/utils/make_update.py Updating Precompiled Libraries and Tests svn --non-interactive cleanup /Users/yoshinori_sano/blender-git/blender/../lib/darwin svn --non-interactive switch https://svn.blender.org/svnroot/bf-blender/trunk/lib/darwin /Users/yoshinori_sano/blender-git/blender/../lib/darwin [...] A /Users/yoshinori_sano/blender-git/lib/darwin/llvm/lib/clang A /Users/yoshinori_sano/blender-git/lib/darwin/llvm/lib/clang/9.0.1 A /Users/yoshinori_sano/blender-git/lib/darwin/llvm/lib/clang/9.0.1/include A /Users/yoshinori_sano/blender-git/lib/darwin/llvm/lib/clang/9.0.1/include/cuda_wrappers A /Users/yoshinori_sano/blender-git/lib/darwin/llvm/lib/clang/9.0.1/include/openmp_wrappers A /Users/yoshinori_sano/blender-git/lib/darwin/llvm/lib/clang/9.0.1/include/ppc_wrappers U /Users/yoshinori_sano/blender-git/lib/darwin/usd/lib/usd/usdShade/resources/generatedSchema.usda U /Users/yoshinori_sano/blender-git/lib/darwin/usd/lib/usd/usdSkel/resources/plugInfo.json U /Users/yoshinori_sano/blender-git/lib/darwin/usd/lib/usd/usdSkel/resources/generatedSchema.usda U /Users/yoshinori_sano/blender-git/lib/darwin/usd/lib/usd/usdShade/resources/usdShade/schema.usda U /Users/yoshinori_sano/blender-git/lib/darwin/usd/lib/usd/usdVol/resources/plugInfo.json U /Users/yoshinori_sano/blender-git/lib/darwin/usd/lib/usd/usdVol/resources/generatedSchema.usda U /Users/yoshinori_sano/blender-git/lib/darwin/usd/lib/usd/usdUI/resources/plugInfo.json U /Users/yoshinori_sano/blender-git/lib/darwin/llvm/bin/llvm-config U /Users/yoshinori_sano/blender-git/lib/darwin/llvm/bin/clang-format U /Users/yoshinori_sano/blender-git/lib/darwin/llvm/include/llvm/Config/llvm-config.h U /Users/yoshinori_sano/blender-git/lib/darwin/llvm/lib/libLLVMAsmPrinter.a U /Users/yoshinori_sano/blender-git/lib/darwin/llvm/lib/libLLVMBitstreamReader.a U /Users/yoshinori_sano/blender-git/lib/darwin/llvm/lib/libLLVMCoverage.a U /Users/yoshinori_sano/blender-git/lib/darwin/llvm/lib/libLLVMDebugInfoMSF.a U /Users/yoshinori_sano/blender-git/lib/darwin/llvm/lib/libLLVMExecutionEngine.a U /Users/yoshinori_sano/blender-git/lib/darwin/llvm/lib/libLLVMAnalysis.a U /Users/yoshinori_sano/blender-git/lib/darwin/llvm/lib/libLLVMBitReader.a U /Users/yoshinori_sano/blender-git/lib/darwin/llvm/lib/libLLVMInstCombine.a U /Users/yoshinori_sano/blender-git/lib/darwin/llvm/lib/libLLVMLTO.a U /Users/yoshinori_sano/blender-git/lib/darwin/llvm/lib/libLLVMMC.a U /Users/yoshinori_sano/blender-git/lib/darwin/llvm/lib/libLLVMMCParser.a [...]