donmccurdy / glTF-Transform

glTF 2.0 SDK for JavaScript and TypeScript, on Web and Node.js.
https://gltf-transform.dev
MIT License
1.42k stars 150 forks source link

simplify: attribute weighted simplification #1335

Open marwie opened 8 months ago

marwie commented 8 months ago

Hello, currently simplify doesn't take vertex colors into account. Looks like meshoptimizer added this feature recently. Is this already exposed/available in gltf-transform?

https://github.com/zeux/meshoptimizer/issues/652#issuecomment-1922083991

donmccurdy commented 8 months ago

Not yet exposed – see #1153. It's marked as an 'experimental' feature, so we would need to do something like that here, as I assume the meshoptimizer API could change at any time. In the meantime, vertex colors only factor in to the extent that they limit welding vertices before simplification.

marwie commented 8 months ago

Ok - thanks for the link!

marwie commented 8 months ago

Here's also another very very simple model where this would help (it would probably not remove any vertices in this simple case)

BenchSmall.zip

image

kzhsw commented 8 months ago

Also have a look at https://github.com/donmccurdy/glTF-Transform/discussions/992

donmccurdy commented 7 months ago

It looks like there are breaking changes planned for the simplifyWithAttributes API, which is still experimental:

https://github.com/zeux/meshoptimizer/pull/601

I think the rest of this task – supporting simplifyWithAttributes — will need to wait for a 4.1+ release.

jo-chemla commented 2 months ago

In case it is useful to the discussion, a recent meshoptimizer PR exposed target_error to gltf_pack https://github.com/zeux/meshoptimizer/issues/494

This change exposes simplification error via command line argument -se, which can be valuable to control simplification more precisely and may also be used to slightly increase the defaults when -sv is used. Also this change completes https://github.com/zeux/meshoptimizer/pull/688 by incorporating both normals and colors when -sv is specified, which improves quality on models with vertex colors further.

kzhsw commented 2 months ago

In case it is useful to the discussion, a recent meshoptimizer PR exposed target_error to gltf_pack zeux/meshoptimizer#494

@jo-chemla glTF-Transform does not directly use the gltfpack tool, it uses the meshoptimizer js api here