Resources about porting an app from Unity


I’m an university professor with a background as a 3D artist and creative coding and I was considering porting my phd project from Unity to Panda, in order to be easier to open-source the code (and also port my Python skills to C++) .

As a test-drive I used the GeoMipTerrain class to import and render the (very big) heightmap from my app to Panda, expecting Panda to kill it, which didn’t happen. Quite the opposite.

First thought was that I’m doing it wrong, which leads to the question about resources (documentation, tutorials) that can help me do the port specifically from Unity.



BTW: below the render.analyze() dump. I know that a rescaling is being done, but the same is true with a 513x513 heighmap. I tested.

(all display modules loaded.)
:grutil(warning): Rescaling heightfield image heightmap.png from 2048x2048 to 2049x2049 pixels.
4115 total nodes (including 0 instances); 0 LODNodes.
4098 transforms; 0% of nodes have some render attribute.
4100 Geoms, with 4100 GeomVertexDatas and 3 GeomVertexFormats, appear on 4100 GeomNodes.
4460592 vertices, 4460544 normals, 4460550 colors, 4460544 texture coordinates.
22609 normals are too long, 4418167 are too short. Average normal length is nan
GeomVertexData arrays occupy 209089K memory.
GeomPrimitive arrays occupy 85K memory.
4440906 vertices are unreferenced by any GeomPrimitives.
4088 GeomPrimitive arrays are redundant, wasting 48K.
14478 triangles:
0 of these are on 0 tristrips.
14478 of these are independent triangles.
3 lines, 0 points.
0 textures, estimated minimum 0K texture memory required.

4100 geoms is on the order of 10x as much as your typical GPU will be able to render smoothly. You’ll need to increase the block size in order to decrease the number of blocks.

The rescaling only happens when your heightmap is not a power-of-two-plus-one size. This is a limitation of the algorithm (many algorithms actually have this requirement).