Skip to content

Commit 328d205

Browse files
authored
Merge pull request #181 from lighttransport/tydra-optional
Make Tydra build optional.
2 parents d37e6ee + f403f82 commit 328d205

File tree

2 files changed

+61
-27
lines changed

2 files changed

+61
-27
lines changed

CMakeLists.txt

+45-21
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ option(TINYUSDZ_BUILD_EXAMPLES
7474
option(TINYUSDZ_WITH_BUILTIN_IMAGE_LOADER
7575
"Build with built-in image loader(stb_image and fpng). When disabled, app need to provide image loader callback to load images."
7676
${TINYUSDZ_DEFAULT_WITH_BUILTIN_IMAGE_LOADER})
77+
option(TINYUSDZ_WITH_TYDRA
78+
"Build with Tydra module(Handly USD scene converter for the renderer, DCC, etc)."
79+
ON)
80+
7781

7882
if(MSVC)
7983
# it looks it is hard to disable C++ exception for MSVC, so enable exception by default
@@ -128,7 +132,8 @@ option(TINYUSDZ_WITH_ALAC_AUDIO "Build with ALAC(as M4A) Audio support" OFF)
128132
option(TINYUSDZ_WITH_PYTHON "Build with Python binding through pybind11" OFF)
129133

130134
if (TINYUSDZ_WITH_PYTHON)
131-
# force enable C API + DLL build
135+
# force enable Tydra C API + DLL build
136+
set(TINYUSDZ_WITH_TYDRA ON CACHE INTERNAL "" FORCE)
132137
set(TINYUSDZ_WITH_C_API ON CACHE INTERNAL "" FORCE)
133138
set(TINYUSDZ_BUILD_SHARED_LIBS ON CACHE INTERNAL "" FORCE)
134139
endif()
@@ -141,6 +146,12 @@ option(
141146

142147
option(TINYUSDZ_WITH_PXR_COMPAT_API "Build with pxr compatible API" ${TINYUSDZ_DEFAULT_WITH_PXR_COMPAT_API})
143148

149+
# C API requires Tydra
150+
if (NOT TINYUSDZ_WITH_TYDRA AND TINYUSDZ_WITH_C_API)
151+
message(WARNING "C API requires Tydra enabled, so disable C API build. Please do not set TINYUSDZ_WITH_TYDRA Off if you need C API library")
152+
set(TINYUSDZ_WITH_C_API Off CACHE INTERNAL "" FORCE)
153+
endif ()
154+
144155
# deprecated. to be removed
145156
#option(
146157
# TINYUSDZ_WITH_BLENDER_ADDON
@@ -393,26 +404,31 @@ set(TINYUSDZ_SOURCES
393404
${PROJECT_SOURCE_DIR}/src/pprinter.cc
394405
${PROJECT_SOURCE_DIR}/src/stage.cc
395406
${PROJECT_SOURCE_DIR}/src/stage.hh
396-
${PROJECT_SOURCE_DIR}/src/tydra/facial.cc
397-
${PROJECT_SOURCE_DIR}/src/tydra/facial.hh
398-
${PROJECT_SOURCE_DIR}/src/tydra/prim-apply.cc
399-
${PROJECT_SOURCE_DIR}/src/tydra/prim-apply.hh
400-
${PROJECT_SOURCE_DIR}/src/tydra/scene-access.cc
401-
${PROJECT_SOURCE_DIR}/src/tydra/scene-access.hh
402-
${PROJECT_SOURCE_DIR}/src/tydra/attribute-eval.hh
403-
${PROJECT_SOURCE_DIR}/src/tydra/attribute-eval.cc
404-
${PROJECT_SOURCE_DIR}/src/tydra/attribute-eval-typed.cc
405-
${PROJECT_SOURCE_DIR}/src/tydra/attribute-eval-typed-animatable.cc
406-
${PROJECT_SOURCE_DIR}/src/tydra/attribute-eval-typed-fallback.cc
407-
${PROJECT_SOURCE_DIR}/src/tydra/attribute-eval-typed-animatable-fallback.cc
408-
${PROJECT_SOURCE_DIR}/src/tydra/obj-export.cc
409-
${PROJECT_SOURCE_DIR}/src/tydra/usd-export.cc
410-
${PROJECT_SOURCE_DIR}/src/tydra/shader-network.cc
411-
${PROJECT_SOURCE_DIR}/src/tydra/shader-network.hh
412-
${PROJECT_SOURCE_DIR}/src/tydra/render-data.cc
413-
${PROJECT_SOURCE_DIR}/src/tydra/render-data.hh
414407
)
415408

409+
if (TINYUSDZ_WITH_TYDRA)
410+
list(APPEND TINYUSDZ_SOURCES
411+
${PROJECT_SOURCE_DIR}/src/tydra/facial.cc
412+
${PROJECT_SOURCE_DIR}/src/tydra/facial.hh
413+
${PROJECT_SOURCE_DIR}/src/tydra/prim-apply.cc
414+
${PROJECT_SOURCE_DIR}/src/tydra/prim-apply.hh
415+
${PROJECT_SOURCE_DIR}/src/tydra/scene-access.cc
416+
${PROJECT_SOURCE_DIR}/src/tydra/scene-access.hh
417+
${PROJECT_SOURCE_DIR}/src/tydra/attribute-eval.hh
418+
${PROJECT_SOURCE_DIR}/src/tydra/attribute-eval.cc
419+
${PROJECT_SOURCE_DIR}/src/tydra/attribute-eval-typed.cc
420+
${PROJECT_SOURCE_DIR}/src/tydra/attribute-eval-typed-animatable.cc
421+
${PROJECT_SOURCE_DIR}/src/tydra/attribute-eval-typed-fallback.cc
422+
${PROJECT_SOURCE_DIR}/src/tydra/attribute-eval-typed-animatable-fallback.cc
423+
${PROJECT_SOURCE_DIR}/src/tydra/obj-export.cc
424+
${PROJECT_SOURCE_DIR}/src/tydra/usd-export.cc
425+
${PROJECT_SOURCE_DIR}/src/tydra/shader-network.cc
426+
${PROJECT_SOURCE_DIR}/src/tydra/shader-network.hh
427+
${PROJECT_SOURCE_DIR}/src/tydra/render-data.cc
428+
${PROJECT_SOURCE_DIR}/src/tydra/render-data.hh
429+
)
430+
endif (TINYUSDZ_WITH_TYDRA)
431+
416432
if(TINYUSDZ_WITH_PXR_COMPAT_API)
417433
list(APPEND TINYUSDZ_SOURCES ${PROJECT_SOURCE_DIR}/src/pxr-compat.cc)
418434
endif()
@@ -1066,6 +1082,11 @@ foreach(TINYUSDZ_LIB_TARGET ${TINYUSDZ_LIBS})
10661082
PRIVATE "TINYUSDZ_WITH_OPENSUBDIV")
10671083
endif(TINYUSDZ_WITH_OPENSUBDIV)
10681084

1085+
if(TINYUSDZ_WITH_TYDRA)
1086+
target_compile_definitions(${TINYUSDZ_LIB_TARGET}
1087+
PRIVATE "TINYUSDZ_WITH_TYDRA")
1088+
endif(TINYUSDZ_WITH_OPENSUBDIV)
1089+
10691090
if(NOT TINYUSDZ_CXX_EXCEPTIONS)
10701091
if(MSVC)
10711092
target_compile_options(${TINYUSDZ_LIB_TARGET} PRIVATE /EHs-c-)
@@ -1196,8 +1217,11 @@ endif()
11961217

11971218
if(TINYUSDZ_BUILD_EXAMPLES)
11981219
add_subdirectory(examples/tusdcat)
1199-
add_subdirectory(examples/tydra_api)
1200-
add_subdirectory(examples/tydra_to_renderscene)
1220+
if (TINYUSDZ_WITH_TYDRA)
1221+
add_subdirectory(examples/tydra_api)
1222+
add_subdirectory(examples/tydra_to_renderscene)
1223+
endif ()
1224+
12011225
add_subdirectory(examples/api_tutorial)
12021226
add_subdirectory(examples/file_format)
12031227
add_subdirectory(examples/asset_resolution)

examples/api_tutorial/api-tutorial-main.cc

+16-6
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,15 @@
88
#include "prim-pprint.hh"
99
#include "value-pprint.hh"
1010

11+
#if defined(TINYUSDZ_WITH_TYDRA)
12+
1113
// Tydra is a collection of APIs to access/convert USD Prim data
1214
// (e.g. Get Prim's attribute by name)
1315
// See <tinyusdz>/examples/tydra_api for more info about Tydra API.
1416
#include "tydra/scene-access.hh"
1517

18+
#endif
19+
1620
//
1721
// create a Scene
1822
//
@@ -655,7 +659,15 @@ int main(int argc, char **argv) {
655659
return -1;
656660
}
657661

662+
const tinyusdz::GeomMesh *mesh = prim->as<tinyusdz::GeomMesh>();
663+
if (!mesh) {
664+
std::cerr << "Expected GeomMesh.\n";
665+
return -1;
666+
}
667+
668+
#if defined(TINYUSDZ_WITH_TYDRA)
658669
tinyusdz::Attribute attr;
670+
// TODO: Use EvaluateAttribute
659671
if (tinyusdz::tydra::GetAttribute(*prim, "points", &attr, &err)) {
660672
std::cout << "point attribute type = " << attr.type_name() << "\n";
661673

@@ -674,12 +686,10 @@ int main(int argc, char **argv) {
674686
} else {
675687
std::cerr << err << "\n";
676688
}
677-
678-
const tinyusdz::GeomMesh *mesh = prim->as<tinyusdz::GeomMesh>();
679-
if (!mesh) {
680-
std::cerr << "Expected GeomMesh.\n";
681-
return -1;
682-
}
689+
#else
690+
// limitation: `points` attribute cannot be attribute connection
691+
std::cout << "point attribute value = " << mesh->get_points() << "\n";
692+
#endif
683693

684694
// GeomPrimvar
685695
// Access GeomPrimvar

0 commit comments

Comments
 (0)