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 3: | Line 3: | ||
This project has been realized through the development efforts of GCI students, GSoC students, and capstone students at Texas A&M University, enabled by development support and mentoring by BRL-CAD and Appleseed development teams. | This project has been realized through the development efforts of GCI students, GSoC students, and capstone students at Texas A&M University, enabled by development support and mentoring by BRL-CAD and Appleseed development teams. | ||
− | |||
== Progress == | == Progress == | ||
Line 10: | Line 9: | ||
* 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 27: | Line 33: | ||
# [[Compiling|Download and compile BRL-CAD]] | # [[Compiling|Download and compile BRL-CAD]] | ||
# [https://appleseedhq.net Download and install a pre-compiled appleseed] | # [https://appleseedhq.net Download and install a pre-compiled appleseed] | ||
− | # | + | # ... |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |