13-08-2021, 08:58 AM
(This post was last modified: 13-08-2021, 09:02 AM by josemendez.)
Ok, so no CPU procedural geometry of any kind is supported then. I can only assume any geometry modified/created on the GPU isn't either, so no geometry shader/vertex shader/compute shader stuff will be picked up by Octane. That's a showstopper.
Depending on how/when they cache mesh data (when a Mesh object is created, when a Mesh object is stored as an asset, when the sharedMesh property of a renderer is set... etc), there's multiple possible workarounds. All of them are quite expensive though, and none of them are clean or elegant. To know for sure which one works best I would need to know exactly how Octane works internally, though. As it stands, all I can do is guess.
One thing you can try is to instantiate the rope mesh in CommitMeshData() (essentially creating a copy of the mesh) and then setting the mesh renderer's sharedMesh property to this mesh copy, every frame. This should be enough to trick Octane into thinking a new mesh has been created. If it isn't, then it means they don't pick up new meshes that only exist in memory, and they require the mesh to exist as an asset. In that case, your original attempt would be the one closest to working.
Depending on how/when they cache mesh data (when a Mesh object is created, when a Mesh object is stored as an asset, when the sharedMesh property of a renderer is set... etc), there's multiple possible workarounds. All of them are quite expensive though, and none of them are clean or elegant. To know for sure which one works best I would need to know exactly how Octane works internally, though. As it stands, all I can do is guess.
One thing you can try is to instantiate the rope mesh in CommitMeshData() (essentially creating a copy of the mesh) and then setting the mesh renderer's sharedMesh property to this mesh copy, every frame. This should be enough to trick Octane into thinking a new mesh has been created. If it isn't, then it means they don't pick up new meshes that only exist in memory, and they require the mesh to exist as an asset. In that case, your original attempt would be the one closest to working.