Replies: 5 comments 7 replies
-
Unfortunately, right now there's not an easy built-in way to accomplish what you're trying to do in a performant way. What you're currently doing with these two steps:
is really the only way to do it, and as you mentioned the performance will not be good. Eventually I'd like to support something like dynamic transformations for each individual splat. It would be straight-forward to do, I imagine I'd have to store a transformation matrix for each splat that would be sent to the shader on every frame. The big down-side would be all the memory required to store those transforms. Conceivably, in order to save some memory (and depending on exactly what you're trying to do), you could implement something like skeletal animation with vertex skinning, so you wouldn't necessarily have to store a transformation for every splat, only for the "bone" that a splat is connected to. |
Beta Was this translation helpful? Give feedback.
-
Sorry, I haven't really had time recently to look into this, hopefully I will soon. I'll let you know if can figure something out! |
Beta Was this translation helpful? Give feedback.
-
I think for this issue I might need to see all of your code so I can try running it locally to debug it. It looks like your modifications should move the splat centers as intended. The video you uploaded is all black, could you try re-uploading it? |
Beta Was this translation helpful? Give feedback.
-
My first guess would be that the splats are not being properly sorted. The offset to the splat center that is being applied in the vertex shader also needs be applied to the splat center when calculating the splat's distance from the camera for the sort. Is that happening? |
Beta Was this translation helpful? Give feedback.
-
Sorry for the late replay, What I think might be happening is state conflict with three.js. Unfortunately WebGL does not provide a nice way to isolate state changes, so when you bind textures or activate texture units, it may conflict with what three.js thinks the state should be. I have tried to get around that to some extent by using a VAO (Vertex array object) for all state that is associated with the transform feedback calculations. The idea is that state for three.js is saved in its own VAO, and when I perform the transform feedback calculations I activate my own VAO for the calculations and then restore the VAO for three.js when they're done. The problem is that you can't save all WebGL state in a VAO, only certain state like vertex attribute bindings. So state like texture bindings shouldn't really be touched outside of three.js unless you know you can restore it after you've done what you need to do. |
Beta Was this translation helpful? Give feedback.
-
Hi I'm a student trying to implement blendshape for GaussuanSplats by mapping gaussian splattings' positions to a model's meshes'.
I found it complicated when I want to make changes to splats' positions at runtime and my current approach is
No wonder this is a dumb, but easy to find way. Would bring huge performance problem.
I noticed that it seems to code information such as centerArray into textures to make it compute inside shader by GPU. However I am not yet professional enough to handle that.
Is there a faster while relatively simple way to do this?
Beta Was this translation helpful? Give feedback.
All reactions