UnityGaussianSplatting icon indicating copy to clipboard operation
UnityGaussianSplatting copied to clipboard

PLY import: support non-standard data ordering (e.g. scaniverse)

Open benoitmar opened this issue 1 year ago • 8 comments

Hello,

I get this while importing ply from scaniverse. PLY Vertex size mismatch, expected 248 but file has 236.

Can you help? Thanks

Ben

benoitmar avatar Apr 03 '24 10:04 benoitmar

That sounds exactly like https://github.com/aras-p/UnityGaussianSplatting/issues/81#issuecomment-2033537936 i.e. the PLY file is "somehow" not matching the standard data layout, but hard to say how exactly without having the file in question. Can you share some file from that scaniverse thing?

aras-p avatar Apr 03 '24 10:04 aras-p

Thanks for you fast answer. Here is a sample file

Regards Ben

benoitmar avatar Apr 03 '24 14:04 benoitmar

Ok looks like scaniverse produces a PLY file with different data order compared to what most other 3DGS software does. To fix this, I'd have to implement some code to rearrange the data into the expected order. I don't know if/when I'd do that (or someone could implement this and contribute a PR to this repo?). This could also perhaps be fixed on scaniverse side by making their export match the data order used by others.

Scaniverse data layout is this:

float3 pos;
float3 scale;
float4 rot;
float opacity;
float3 color;
float3 sh[15];

whereas the "standard" order is:

float3 pos;
float3 normal;
float3 color;
float3 sh[15];
float opacity;
float3 scale;
float4 rot;

aras-p avatar Apr 04 '24 04:04 aras-p

I'm having the same issue.

I've sent an email to Scaniverse, asking what they can tell me about their format. I'll report back here if I get an answer.

I thought of fixing it myself (or maybe writing a ply-file converter), but I can't find the normal data in the scaniverse files.

Incidentally, that's also the reason the Scaniverse files give an error: each point is 3 floats short of the expected size (hence 12 bytes shorter).

jackjansen avatar Apr 14 '24 20:04 jackjansen

@jackjansen oh the scaniverse format/layout is known (see my previous comment here). The normal in the "standard" 3DGS PLY layout is not used for anything whatsoever, just putting zeroes in there would work fine.

aras-p avatar Apr 15 '24 08:04 aras-p

I have reported the format issue to the Scanniverse team, it should be fixed in the next release.

benoitmar avatar Apr 15 '24 15:04 benoitmar

I attempted to patch GaussSplatAssetCreator.cs and GaussSplatRendererEditor.cs to load the original Scaniverse file format, but just disabling the normals check and changing the data format didn't work. The color and transparency did not load correctly. I was able to fix problematic Scaniverse ply files and load in Unity after converting them from 3DGS format to Cloud Compare and back to 3DGS using 3dgsconverter. HTH anyone waiting on the Scaniverse app update.

mrintergalactickeyboard avatar Apr 19 '24 07:04 mrintergalactickeyboard

Hi! The latest version of Scaniverse (3.0.2) exports to PLY with the "standard" layout and is compatible with UnityGaussianSplatting.

keithito avatar Apr 25 '24 16:04 keithito

Implemented in 3bff1de

aras-p avatar Apr 06 '25 14:04 aras-p