Editing Appleseed
From BRL-CAD
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 10: | Line 10: | ||
* defining the render image pixel dimensions | * defining the render image pixel dimensions | ||
* setting the azimuth/elevation and perspective angle | * setting the azimuth/elevation and perspective angle | ||
− | |||
As mentioned, the goal of the project is for art.exe to implement the same features as rt.exe, so that, in a sense, they can be used interchangeably. Therefore, if possible, it would be preferred if art could reuse the same helper functions and variables used by rt. For example, much of the command-line option parsing performed by art directly comes from opt.c/usage.cpp, which was originally used by rt. This makes the code much cleaner and easier to maintain. | As mentioned, the goal of the project is for art.exe to implement the same features as rt.exe, so that, in a sense, they can be used interchangeably. Therefore, if possible, it would be preferred if art could reuse the same helper functions and variables used by rt. For example, much of the command-line option parsing performed by art directly comes from opt.c/usage.cpp, which was originally used by rt. This makes the code much cleaner and easier to maintain. | ||
+ | |||
== To-Do == | == To-Do == | ||
+ | === Separating Regions === | ||
+ | * The custom BRL-CAD plugin currently tracks all BRL-CAD regions and their mappings to Appleseed instances via a single "ray trace instance pointer" (rtip). It uses a string comparison to determine if a hit is on a corresponding appleseed instance. While this works, it's incredibly inefficient. It either needs a separate rtip per object (ideal) or it needs to use pointers/integers to determine if we hit the Appleseed instance. | ||
+ | |||
=== Colors/Materials === | === Colors/Materials === | ||
* BRL-CAD objects are rendered by appleseed individually and can have different colors and/or materials assigned to each instance. However, there is no automatic mapping from BRL-CAD shader settings to Appleseed settings. PBR shaders are supported via BRL-CAD 'material' objects (see 'material' command and gltf import). Using more advanced materials (e.g., with textures) is untested. | * BRL-CAD objects are rendered by appleseed individually and can have different colors and/or materials assigned to each instance. However, there is no automatic mapping from BRL-CAD shader settings to Appleseed settings. PBR shaders are supported via BRL-CAD 'material' objects (see 'material' command and gltf import). Using more advanced materials (e.g., with textures) is untested. | ||
+ | |||
+ | === Multithreading Support === | ||
+ | * Both appleseed and librt are capable of multithreaded rendering, but at the moment, the plugin will only work on a single thread. At some point, multithreading support should be implemented in order to fully take advantage of appleseed/librt capabilities. | ||
=== Refining CMake === | === Refining CMake === | ||
* Setting up the appleseed project requires a lot of hacky and manual work due to relying on a pre-built binary of Appleseed. The CMake build needs to compile Appleseed and all its dependencies using CMake's External_ProjectAdd feature in order to make the build process easier for all platforms and in order to ensure 'art' is always enabled. | * Setting up the appleseed project requires a lot of hacky and manual work due to relying on a pre-built binary of Appleseed. The CMake build needs to compile Appleseed and all its dependencies using CMake's External_ProjectAdd feature in order to make the build process easier for all platforms and in order to ensure 'art' is always enabled. | ||
+ | |||
== Compiling 'art' == | == Compiling 'art' == | ||
Line 44: | Line 51: | ||
## Select "Generate" | ## Select "Generate" | ||
## Select "Open Project" | ## Select "Open Project" | ||
− | # Navigate to BRL-CAD Executables -> Rt -> art, right-click and select Build | + | # Navigate to BRL-CAD Executables -> Rt -> art, right-click and select Build |
− | + | # If 0 build errors | |
− | # If 0 build errors | ||
## open a cmd.exe or git bash terminal window | ## open a cmd.exe or git bash terminal window | ||
## navigate to build.appleseed folder | ## navigate to build.appleseed folder | ||
## run art without args (e.g., type "Debug/bin/art.exe" on Windows and confirm a usage statement is displayed) | ## run art without args (e.g., type "Debug/bin/art.exe" on Windows and confirm a usage statement is displayed) | ||
# Compile rest of BRL-CAD (compile the ALL_BUILD target on Windows) | # Compile rest of BRL-CAD (compile the ALL_BUILD target on Windows) | ||
− | # If 0 build errors | + | # If 0 build errors |
## run art with args (e.g., "Debug/bin/art.exe Debug/share/db/moss.g all.g" on Windows) | ## run art with args (e.g., "Debug/bin/art.exe Debug/share/db/moss.g all.g" on Windows) | ||
# IFF you get a Heap error, | # IFF you get a Heap error, | ||
Line 59: | Line 65: | ||
If art has a log message saying "image saved to output/art.png" near the end of logged output, then it ran successfully (even if you still get a Heap error on Windows). | If art has a log message saying "image saved to output/art.png" near the end of logged output, then it ran successfully (even if you still get a Heap error on Windows). | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |