BastiaanOlij / vehicle-demo

Godot VehicleBody demo project
MIT License
155 stars 36 forks source link

Performance issue editing track and trick to solve #6

Open NewNodeGames opened 6 years ago

NewNodeGames commented 6 years ago

I don't know if only happens to me, cause I'm limited for now to GLES2 and I have a old Intel integrated gpu, but when I try to edit the track scene track-base.tscn the performance is really slow and laggy. This is caused by the CSGPolygon children nodes on Path node. I found a trick to avoid this if other users have the same problem:

EDIT: Fastest way: 1- Open the track-base.tscn scene. 2- Select all children node except Posts. 3- On properties panel, click on the clean icon in Path Node. 4- Select the Path node. 5- Press 7 on Numpad and 5 to switch to ortographic view. 6- Zoom out if needed with the mouse wheel. Now you can edit the track without any issue, move points, add and delete. When you finish to edit select again nodes like step 2 and assign Path in Path Node.

Method 2: 1- Open the track-base.tscn scene. 2- Select the main Path node. 3- In the properties panel click on the arrow in curve. 4- Click on Copy. 5- Create a new scene. 6- Add Path node. 7- Again click on the arrow like step 3 but now select Paste. 8- Press 7 on Numpad and 5 to switch to ortographic view.

  1. Zoom out if needed with the mouse wheel. Now you can edit the track without any issue, move points, add and delete. If you return to track-base.tscn the changes would have to be visible. If not use Copy and Paste from the new scene to track-base.tscn.
BastiaanOlij commented 6 years ago

This is indeed a problem with very large CSGPolygons. I believe, but can't say for sure, that it is caused by the wireframe being rendered. I don't think the logic that does this was ever intended to draw so much data.

The way I've gone about it is just saving the curve to a separate resource file and then have a second scene that just has a path node with the same curve loaded. THat way you can easily edit the curve without all the extra data.

Because I don't render the wireframe I also do not have this performance issue with the gdprocmesh implementation.