tangent-opensource / hdBlackbird

Blackbird Hydra Delegate
Apache License 2.0
298 stars 36 forks source link

install instructions? #36

Closed Timaroberts closed 3 years ago

Timaroberts commented 3 years ago

Hi, I'd like to test your plug-in, however am having trouble finding any instructions on how to get it working inside of houdini. Is there a read me somewhere with this I may have missed? I am currently using H18.5, and Blender 2.90.1

Thanks

Vochsel commented 3 years ago

There are currently build instructions in this repo on how to build it yourself, but if you're looking on a pre-built binary, we are looking to release an up to date solution, with Houdini 18.5 for windows soon.

Nek commented 3 years ago

I'd be glad to compile more detailed compilation instructions but I have problems following the current one. How do I find DUSD_ROOT (for Houdini 18.5) and DCYCLES_ROOT?

bareya commented 3 years ago

Hi @Nek I am going to share more detailed explanation soon.

Nek commented 3 years ago

Hello @bareya. Any news?

bareya commented 3 years ago

Hi @Nek, currently I am assigned to other tasks that are on our priority list. I want to let you know that we had internal conversations to make hdCycles much easier to build. At this point I can not give you any time frame when it's going to happen, but this task is quite high on our priority list. We want everyone to contribute. For now I would have to ask you to be patient.

Nek commented 3 years ago

@bareya makes total sense. Thanks for the update and for being open.

ValleyofJays commented 3 years ago

I have also tried to build but have failed. I cannot understand the cmake instructions: Not sure about the root paths. Perhaps if more detailed instructions were provided, but do let me know if these binaries become available. Thanks for the excellent work!

bareya commented 3 years ago

I promise it's coming soon. I might spend some personal time to update the README, or guide you here how to do it. I am slowly wrapping up with #67, then I can have a look to help you with the build process. Are you intending to use it with Solaris or without it? I am asking because building it against vanilla USD is much simpler.

ValleyofJays commented 3 years ago

Hi. I'd be happy with any workflow improvements for rendering with Cycles from Houdini. But I assume that means Solaris.

bareya commented 3 years ago

Hi all,

I have a small update that I would like to share. I know current building system has not been working for many of you. I put some effort at personal time to make it more approachable. I haven’t tested it for Windows yet. Unfortunately, I have only Linux at home. It is still far from being perfect, but here is so far what I have accomplished:

https://github.com/tangent-opensource/hdcycles/pull/100 https://github.com/tangent-opensource/cycles/pull/18

Cheers, Piotr

bareya commented 3 years ago

If you wish to test it, here I created the repo https://github.com/bareya/hdcycles_for_houdini. There are some requirements to build it:

To build it we have to clone the repo, and pass the compiler with install directory to the building system. I assumed Houdini on Linux is install under /opt/hfs18.5 and it is at least 18.5.519 build. If you wish to modify it, please make a PR!

git clone https://github.com/bareya/hdcycles_for_houdini
cd hdcycles_for_houdini
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/tmp/build -DCMAKE_CXX_COMPILER=g++-6 -DCMAKE_C_COMPILER=gcc-6 && make

After building is done we have to export environment variables, for Hydra to find the plugin:

export PXR_PLUGINPATH_NAME=/tmp/build/plugin/usd/hdCycles/resources/:/tmp/build/plugin/usd/ndrCycles/resources/:${PXR_PLUGINPATH_NAME}

In Stage context you can find Cycles as a new Hydra delegate.

Screenshot from 2021-03-21 14-55-27

alex3dpl commented 3 years ago

@bareya Very exciting project. I look hopefully at the houdini blender combo. I am trying to build hdcycles. Must be gcc-6? Thx for your work. Linux Suse Tumbleweed.

[ 78%] Linking CXX executable stl_logging_unittest /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/utilities_unittest.dir/src/utilities_unittest.cc.o: in functionutilities_sync_val_compare_and_swap_Test::TestBody()': utilities_unittest.cc:(.text+0x18a): undefined reference to testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: utilities_unittest.cc:(.text+0x27b): undefined reference totesting::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: utilities_unittest.cc:(.text+0x36f): undefined reference to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)' collect2: error: ld returned 1 exit status gmake[5]: [CMakeFiles/utilities_unittest.dir/build.make:108: utilities_unittest] Error 1 gmake[4]: [CMakeFiles/Makefile2:164: CMakeFiles/utilities_unittest.dir/all] Error 2 gmake[4]: Waiting for unfinished jobs.... /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/symbolize_unittest.dir/src/symbolize_unittest.cc.o: in function Symbolize_Symbolize_Test::TestBody()': symbolize_unittest.cc:(.text+0x348): undefined reference totesting::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: symbolize_unittest.cc:(.text+0x436): undefined reference to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)' collect2: error: ld returned 1 exit status gmake[5]: [CMakeFiles/symbolize_unittest.dir/build.make:108: symbolize_unittest] Error 1 gmake[4]: [CMakeFiles/Makefile2:218: CMakeFiles/symbolize_unittest.dir/all] Error 2 /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/demangle_unittest.dir/src/demangle_unittest.cc.o: in function Demangle_CornerCases_Test::TestBody()': demangle_unittest.cc:(.text+0x1e9): undefined reference totesting::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: demangle_unittest.cc:(.text+0x3ce): undefined reference to testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: demangle_unittest.cc:(.text+0x5b6): undefined reference totesting::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: demangle_unittest.cc:(.text+0x6cd): undefined reference to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: demangle_unittest.cc:(.text+0x7c9): undefined reference to testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/demangle_unittest.dir/src/demangle_unittest.cc.o:demangle_unittest.cc:(.text+0x8c0): more undefined references totesting::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)' follow /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/demangle_unittest.dir/src/demangle_unittest.cc.o: in function `testing::internal::PrintTo(std::string const&, std::ostream)': demangle_unittest.cc:(.text._ZN7testing8internal7PrintToERKSsPSo[_ZN7testing8internal7PrintToERKSsPSo]+0x1f): undefined reference to testing::internal::PrintStringTo(std::string const&, std::ostream*)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/demangle_unittest.dir/src/demangle_unittest.cc.o: in functiontesting::AssertionResult::AppendMessage(testing::Message const&)': demangle_unittest.cc:(.text._ZN7testing15AssertionResult13AppendMessageERKNS_7MessageE[_ZN7testing15AssertionResult13AppendMessageERKNS_7MessageE]+0x77): undefined reference to testing::Message::GetString() const' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/demangle_unittest.dir/src/demangle_unittest.cc.o: in functiontesting::AssertionResult testing::internal::CmpHelperEQFailure<std::string, char const>(char const, char const, std::string const&, char const const&)': demangle_unittest.cc:(.text._ZN7testing8internal18CmpHelperEQFailureISsPKcEENS_15AssertionResultES3_S3_RKTRKT0[_ZN7testing8internal18CmpHelperEQFailureISsPKcEENS_15AssertionResultES3_S3_RKTRKT0]+0x6c): undefined reference to testing::internal::EqFailure(char const*, char const*, std::string const&, std::string const&, bool)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/logging_unittest.dir/src/logging_unittest.cc.o: in functionmain': logging_unittest.cc:(.text+0x2e7b): undefined reference to testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/logging_unittest.dir/src/logging_unittest.cc.o: in functionTestCustomLoggerDeletionOnShutdown()': logging_unittest.cc:(.text+0xcdb8): undefined reference to testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/logging_unittest.dir/src/logging_unittest.cc.o: in functiongoogle::BenchmarkRegisterer::BenchmarkRegisterer(char const, void ()(int))': logging_unittest.cc:(.text._ZN6google19BenchmarkRegistererC2EPKcPFviE[_ZN6google19BenchmarkRegistererC5EPKcPFviE]+0xa8): undefined reference to testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/logging_unittest.dir/src/logging_unittest.cc.o: in functiontesting::AssertionResult testing::internal::CmpHelperEQFailure<int, int>(char const, char const, int const&, int const&)': logging_unittest.cc:(.text._ZN7testing8internal18CmpHelperEQFailureIiiEENS_15AssertionResultEPKcS4_RKTRKT0[_ZN7testing8internal18CmpHelperEQFailureIiiEENS_15AssertionResultEPKcS4_RKTRKT0]+0x6c): undefined reference to testing::internal::EqFailure(char const*, char const*, std::string const&, std::string const&, bool)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/logging_unittest.dir/src/logging_unittest.cc.o: in functiontesting::AssertionResult testing::internal::CmpHelperEQFailure<void, void>(char const, char const, void const&, void const&)': logging_unittest.cc:(.text._ZN7testing8internal18CmpHelperEQFailureIPvS2_EENS_15AssertionResultEPKcS5_RKTRKT0[_ZN7testing8internal18CmpHelperEQFailureIPvS2_EENS_15AssertionResultEPKcS5_RKTRKT0]+0x6c): undefined reference to `testing::internal::EqFailure(char const, char const, std::string const&, std::string const&, bool)' collect2: error: ld returned 1 exit status gmake[5]: ** [CMakeFiles/demangle_unittest.dir/build.make:108: demangle_unittest] Error 1 gmake[4]: [CMakeFiles/Makefile2:191: CMakeFiles/demangle_unittest.dir/all] Error 2 /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/stl_logging_unittest.dir/src/stl_logging_unittest.cc.o: in function TestSTLLogging()': stl_logging_unittest.cc:(.text+0x880): undefined reference totesting::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: stl_logging_unittest.cc:(.text+0x9c9): undefined reference to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: stl_logging_unittest.cc:(.text+0xb12): undefined reference to testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: stl_logging_unittest.cc:(.text+0xf1b): undefined reference totesting::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: stl_logging_unittest.cc:(.text+0x1064): undefined reference to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/stl_logging_unittest.dir/src/stl_logging_unittest.cc.o:stl_logging_unittest.cc:(.text+0x11ad): more undefined references to testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)' follow /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/stl_logging_unittest.dir/src/stl_logging_unittest.cc.o: in functiontesting::internal::PrintTo(std::string const&, std::ostream)': stl_logging_unittest.cc:(.text._ZN7testing8internal7PrintToERKSsPSo[_ZN7testing8internal7PrintToERKSsPSo]+0x1f): undefined reference to `testing::internal::PrintStringTo(std::string const&, std::ostream)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/stl_logging_unittest.dir/src/stl_logging_unittest.cc.o: in function testing::AssertionResult testing::internal::CmpHelperEQFailure<std::string, char [9]>(char const*, char const*, std::string const&, char const (&) [9])': stl_logging_unittest.cc:(.text._ZN7testing8internal18CmpHelperEQFailureISsA9_cEENS_15AssertionResultEPKcS5_RKT_RKT0_[_ZN7testing8internal18CmpHelperEQFailureISsA9_cEENS_15AssertionResultEPKcS5_RKT_RKT0_]+0x6c): undefined reference totesting::internal::EqFailure(char const, char const, std::string const&, std::string const&, bool)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/stl_logging_unittest.dir/src/stl_logging_unittest.cc.o: in function testing::AssertionResult testing::internal::CmpHelperEQFailure<std::string, char [36]>(char const*, char const*, std::string const&, char const (&) [36])': stl_logging_unittest.cc:(.text._ZN7testing8internal18CmpHelperEQFailureISsA36_cEENS_15AssertionResultEPKcS5_RKT_RKT0_[_ZN7testing8internal18CmpHelperEQFailureISsA36_cEENS_15AssertionResultEPKcS5_RKT_RKT0_]+0x6c): undefined reference totesting::internal::EqFailure(char const, char const, std::string const&, std::string const&, bool)' collect2: error: ld returned 1 exit status /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/stl_logging_unittest.dir/src/stl_logging_unittest.cc.o: in function testing::AssertionResult testing::internal::CmpHelperEQFailure<unsigned long, int>(char const*, char const*, unsigned long const&, int const&)': stl_logging_unittest.cc:(.text._ZN7testing8internal18CmpHelperEQFailureImiEENS_15AssertionResultEPKcS4_RKT_RKT0_[_ZN7testing8internal18CmpHelperEQFailureImiEENS_15AssertionResultEPKcS4_RKT_RKT0_]+0x6c): undefined reference totesting::internal::EqFailure(char const, char const, std::string const&, std::string const&, bool)' gmake[5]: [CMakeFiles/logging_unittest.dir/build.make:108: logging_unittest] Error 1 gmake[4]: [CMakeFiles/Makefile2:245: CMakeFiles/logging_unittest.dir/all] Error 2 collect2: error: ld returned 1 exit status gmake[5]: [CMakeFiles/stl_logging_unittest.dir/build.make:108: stl_logging_unittest] Error 1 gmake[4]: [CMakeFiles/Makefile2:812: CMakeFiles/stl_logging_unittest.dir/all] Error 2 gmake[3]: [Makefile:182: all] Error 2 make[2]: [CMakeFiles/glog.dir/build.make:93: glog-prefix/src/glog-stamp/glog-install] Error 2 make[1]: [CMakeFiles/Makefile2:155: CMakeFiles/glog.dir/all] Error 2 make: [Makefile:103: all] Error 2 `

bareya commented 3 years ago

Hi @alex3dpl, If you wish to use it with Houdini then yes gcc-6 is necessary. Also, I disabled GTEST for you https://github.com/bareya/hdcycles_for_houdini/commit/577691abc3b0d7b2d31f727070e0e5290319dc7b https://github.com/bareya/hdcycles_for_houdini/commit/20efc3c0140c5d80355859bc01b5cac83273945a

You can give it a try, it might work. I disabled new ABI here

alex3dpl commented 3 years ago

Thank you @bareya. I was able to build hdcycles plugins with gcc 10 in tmp/... directories. Houdini works fine on Suse Thumbleweed, but doesn't see hdcycles plugins. A few questions :) How can I diagnose what is the real cause? The command should be entered in the linux console? export PXR_PLUGINPATH_NAME=/tmp/build/plugin/usd/hdCycles/resources/:/tmp/build/plugin/usd/ndrCycles/resources/:${PXR_PLUGINPATH_NAME} Thx for the help.

bareya commented 3 years ago

I think it compiles with gcc-10, but it might not work with Houdini that is compiled with gcc-6. Use

export TF_DEBUG="*" 

To get the details why plug is not being loaded.

alex3dpl commented 3 years ago

@bareya export TF_DEBUG="*" unfortunately shows nothing :) What distro are you using for hdcycles, Red Hat, CentOS? It's a very interesting project. Gcc 6.3 is a bit too old to build on Suse Thumbleweed. I'll try to build it myself, but can you share any linux build, like as was with hdcycles for Windows?

bareya commented 3 years ago

@alex3dpl TF_DEBUG comes from USD and is an environment variable that controls Tf behaviour.

So far it worked for me on Windows-10, Ubuntu-20.04, and CentOS-7. Those are the setups that I use on daily basis.

It's difficult to upload the build because it statically links with Cycles, so the binaries are about 150MB. Here is one of my dev branches: https://we.tl/t-Geu2pkGEbh. Some parts might be built in debug mode - it might be slow.

alex3dpl commented 3 years ago

@bareya thank you very much (dzięki wielkie Piotrze). I will try. Maybe there is something wrong with my USD. I watched the Nvidia GTC conference - hdcycles will be part of blackbird renderer or a separate plugin? I have high hopes for the blender houdini pipeline.

bareya commented 3 years ago

Hi, I am closing this one and all install instructions will be updated in the Wiki. https://github.com/tangent-opensource/hdcycles/wiki