Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Custom Fixture Editor becomes unusably slow for complex lights #62

Open
Zedarius5 opened this issue Jul 15, 2023 · 8 comments
Open

Custom Fixture Editor becomes unusably slow for complex lights #62

Zedarius5 opened this issue Jul 15, 2023 · 8 comments
Assignees

Comments

@Zedarius5
Copy link

Description
I have a light bar that I'm recreating in the custom fixture editor. The editor is becoming unusably slow as I continue to add complexity. Currently it takes about 3-4 minutes to make any change.

To Reproduce
I have 61 channels of data, and about ~40 pieces of geometry in the editor. It got linearly (possibly exponentially) slower as I continued to add more things. I used the duplicate feature quite a bit while building it.

I have uploaded my .json file as a .txt, since JSON uploads aren't permitted in this form. Happy to provide additional information.

Computer Specs

  • Windows 11 Pro 64-bit (build 22621)
  • i7-8700k CPU
  • NVidia 3090

_JMAZ_5050.txt

@mylesdebastion
Copy link

mylesdebastion commented Jul 15, 2023 via email

@Zedarius5
Copy link
Author

Hey - accurate pre-viz isn't the goal. I'm just getting into lighting, have 3 of these light bars, and want to prototype driving them with video textures without having to have them set up in my small room.

I've been building the meshes inside the custom fixture editor, using cubes and spheres. How do I check my triangle count?

In the file I uploaded, I have:

  • 15 transforms to help with grouping and moving things around
  • 25 cubes
  • 12 spheres
  • 0 emitters for now
  • 61 channels of data, and I've currently removed all the mapping

That doesn't (to me?) seem like a lot of geometry. Swapping the spheres for cubes didn't alter the responsiveness much. Would intersecting geometry be a problem at all? Many of the objects are intersecting.

Here's an image of what I've got so far - I'm recreating the JMAZ PIXL FX Bar 5050
image

image

@Zedarius5
Copy link
Author

Please correct me if I'm wrong, but wouldn't high-poly geometry cause low framerate? My framerate is fine once everything finishes "thinking," but doing something like translating one of my spheres in any plane, creating a new geometry, or even deleting one, takes literally 3-4 minutes to compute before I'm able to interact with the fixture editor again.

@mylesdebastion
Copy link

mylesdebastion commented Jul 16, 2023 via email

@Zedarius5
Copy link
Author

Zedarius5 commented Jul 16, 2023

Appreciate the help! The light bar has something like 32 separately addressable lights. Doesn’t that mean I’ll need 32 different models in order to control them each in geopix? Should I make each of those separately, already pre-translated to the correct spot, and then import the .obj files into 32 different pieces of geometry in the custom fixture editor?

Or is geopix just not designed for fixtures that have many lights in them?

@EnviralDesign
Copy link
Owner

hey @Zedarius5 love what you're trying to build in the custom fixture editor, is this something that you've already hit a wall building in GP with regular fixtures?

Myles is right about lowering the complexity of the fixture to get better performance, but the reason for why you're seeing 3-4 min stall times is actually not the geometry complexity in this case, but the time TouchDesigner takes to recompile the custom glsl shader. Custom fixtures are gpu accelerated, this is possible because each fixture has a custom shader attached to it. With so many moving parts, transforms, and geometries, the shader gets very large and it takes a long time to recompile. I'll see if the latest branch of td has made this recompile faster, but in the meantime focus on reducing the number of transforms and individual geometries, basically shrink the number of items in the fixture outliner as much as possible.

you won't really be able to do that for the rows of pixels, as there is no strip or grid construct within the custom fixture editor.

Another better choice is to re build this with traditional fixtures in GP, which are optimized for low complexity and high repetition. This entails a slightly different workflow, but I will create a short video tutorial and add it to the wiki (and ping you here) later today when I get that recorded.

I think this type of fixture is a good edge case that is probably common enough to warrant a walk through.

@EnviralDesign EnviralDesign self-assigned this Jul 17, 2023
@EnviralDesign
Copy link
Owner

alright, tutorial is up, however it may take up to an hour before the HQ version is playable on YT:
https://github.com/EnviralDesign/GeoPix/wiki/Creating-compound-fixtures-in-GeoPix

@Zedarius5
Copy link
Author

Incredible, thank you so much. I’ll check this out tonight!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants