News:

 

Topic: Nvil is slow.  (Read 16700 times)

0 Members and 1 Guest are viewing this topic.

  • No avatar
  • Posts: 289
  • Triangle
    • Portfolio
April 17, 2014, 05:35:49 am
I do have to agree that the Streamline tool workflow has made Nvil the fastest workflow of any 3d App I have worked with.

I think we have some cool enough works by the community here for marketing material.

  • No avatar
  • Posts: 3705
  • Developer
  • Administrator
  • Polygon
April 20, 2014, 12:27:58 pm
Today I had to export this model to obj, it has 796k polys, and I had to wait 12 minutes, I have i7 and 28 GB RAM. C4D or Max made it for about 45 sec.
This and other speed limitations turns Nvil into lowpoly modeller, becouse work with high poly models is VERY VERY HARD   :-\



Check this
http://www.digitalfossils.com/Download/NVil-Apr-15-14.rar
The combine and obj export speed should be faster if the scene is heavy with a lot of objects.

  • No avatar
  • Posts: 306
  • Triangle
April 20, 2014, 01:13:36 pm
Export 6 minutes, 8 minutes import, obj format
http://yadi.sk/d/C_iStkCrMpqHoÂhttp://yadi.sk/d/Ojgqo-wAMpqX5Â

  • No avatar
  • Posts: 2101
  • Polygon
April 20, 2014, 01:37:06 pm
Hi Darcvizer,

I exported your file as .obj, it exported in 6 seconds.

------------------------------
I missed hidden objects, so ignore.




« Last Edit: April 20, 2014, 02:48:22 pm by steve »

  • No avatar
  • Posts: 306
  • Triangle
April 20, 2014, 02:13:48 pm
Hi, very strange, I have cpu AMD FX 9590, 32 GB ram memory.
There's a scene there are two hidden mesh of 3d cout, they pay after a hard

  • No avatar
  • Posts: 2101
  • Polygon
April 20, 2014, 02:31:39 pm
There's a scene there are two hidden mesh of 3d cout,

Sorry. I missed the hidden objects.

With hidden object shown, it takes 1 min 25 seconds on my setup.

Majority of the time is spent combining(merge meshes) before export.

IStonia, why do you combine(merge mesh) all objects before .obj export?. It takes far too long, and why is it needed?. If user wants objects combined, let them do that themselves.

  • Posts: 547
  • Administrator
  • Polygon
April 20, 2014, 09:14:58 pm
Isn't it merging based on what your OBJ export settings are, and limitations of the OBJ format?

  • No avatar
  • Posts: 2101
  • Polygon
April 20, 2014, 10:11:32 pm
Nvil merges all mesh for export to .obj by defualt, you cannot currently change that, into a single mesh in memory. The option (to divide) for export are to "Regroup polygons by meshes", which then adds face group information into the .obj file.
In the .obj file, exported from Nvil, there is only ever one object/vertex group.

The .obj format is not limited to that. All .obj exporters I have/do use, export as objects/vertex groups, not face groups.

Here is simple example.

2 box primitives exported to .obj from Wings.(option to export normals/smooth groups enabled)

You will see that each box(object) is divided into its own vertex group, followed by normals/smooth groups. On very large files with many objects, it means that the exporter can convert one object at a time and write it to an open file, close it when finished. It can save a lot of memory on export with multiple high polycount models.
Code: [Select]
# Exported from Wings 3D 1.5.2
mtllib wings_box.mtl
o Cube2
#8 vertices, 6 faces
v 1.00000000 -1.00000000 -1.00000000
v 1.00000000 -1.00000000 1.00000000
v 1.00000000 1.00000000 -1.00000000
v 1.00000000 1.00000000 1.00000000
v 3.00000000 -1.00000000 -1.00000000
v 3.00000000 -1.00000000 1.00000000
v 3.00000000 1.00000000 -1.00000000
v 3.00000000 1.00000000 1.00000000
vn -0.57735027 -0.57735027 -0.57735027
vn -0.57735027 -0.57735027 0.57735027
vn -0.57735027 0.57735027 -0.57735027
vn -0.57735027 0.57735027 0.57735027
vn 0.57735027 -0.57735027 -0.57735027
vn 0.57735027 -0.57735027 0.57735027
vn 0.57735027 0.57735027 -0.57735027
vn 0.57735027 0.57735027 0.57735027
g Cube2_default
usemtl default
s 1
f 1//1 5//5 6//6 2//2
f 2//2 4//4 3//3 1//1
f 2//2 6//6 8//8 4//4
f 3//3 7//7 5//5 1//1
f 4//4 8//8 7//7 3//3
f 5//5 7//7 8//8 6//6
o Cube1
#8 vertices, 6 faces
v -3.00000000 -1.00000000 -1.00000000
v -3.00000000 -1.00000000 1.00000000
v -3.00000000 1.00000000 -1.00000000
v -3.00000000 1.00000000 1.00000000
v -1.00000000 -1.00000000 -1.00000000
v -1.00000000 -1.00000000 1.00000000
v -1.00000000 1.00000000 -1.00000000
v -1.00000000 1.00000000 1.00000000
vn -0.57735027 -0.57735027 -0.57735027
vn -0.57735027 -0.57735027 0.57735027
vn -0.57735027 0.57735027 -0.57735027
vn -0.57735027 0.57735027 0.57735027
vn 0.57735027 -0.57735027 -0.57735027
vn 0.57735027 -0.57735027 0.57735027
vn 0.57735027 0.57735027 -0.57735027
vn 0.57735027 0.57735027 0.57735027
g Cube1_default
usemtl default
s 1
f 9//9 13//13 14//14 10//10
f 10//10 12//12 11//11 9//9
f 10//10 14//14 16//16 12//12
f 11//11 15//15 13//13 9//9
f 12//12 16//16 15//15 11//11
f 13//13 15//15 16//16 14//14


This is 2 box exported from Nvil, with option "Regroup polygons by meshes"

You will see one object/vertex group. The regrouped polygons are groups in the "Face list"
With that method, all mesh are merged in memory, then face info sorted in memory. On multiple large polycount model, that increases memory usage dramatically.

Code: [Select]
#     Vertices: 16
#        Faces: 24
#    Materials: 1

o Object_Combined

mtllib nvil_box.mtl


# vertex list

v -1.470325 -0.5 0.5
v -1.470325 -0.5 -0.5
v -0.470326 -0.5 0.5
v -0.470326 -0.5 -0.5
v -1.470325 0.5 0.5
v -1.470325 0.5 -0.5
v -0.470326 0.5 0.5
v -0.470326 0.5 -0.5
v -0.10215 -0.5 0.5
v -0.10215 -0.5 -0.5
v 0.89785 -0.5 0.5
v 0.89785 -0.5 -0.5
v -0.10215 0.5 0.5
v -0.10215 0.5 -0.5
v 0.89785 0.5 0.5
v 0.89785 0.5 -0.5


# vertex normals

vn 0 0 1
vn -1 0 0
vn 0 -1 0
vn 0 0 -1
vn -1 0 0
vn 0 -1 0
vn 0 0 1
vn 1 0 0
vn 0 -1 0
vn 0 0 -1
vn 1 0 0
vn 0 -1 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 0 -1
vn -1 0 0
vn 0 1 0
vn 0 0 1
vn 0 1 0
vn 1 0 0
vn 0 0 -1
vn 1 0 0
vn 0 1 0
vn 0 0 1
vn -1 0 0
vn 0 -1 0
vn 0 0 -1
vn -1 0 0
vn 0 -1 0
vn 0 0 1
vn 1 0 0
vn 0 -1 0
vn 0 0 -1
vn 1 0 0
vn 0 -1 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 0 -1
vn -1 0 0
vn 0 1 0
vn 0 0 1
vn 0 1 0
vn 1 0 0
vn 0 0 -1
vn 1 0 0
vn 0 1 0


# face list

usemtl Mtrl_01
g Object_Box
s 2
f 1//3 2//6 4//12 3//9
s 4
f 5//15 7//20 8//24 6//18
s 8
f 1//1 3//7 7//19 5//13
s 16
f 2//4 6//16 8//22 4//10
s 32
f 1//2 5//14 6//17 2//5
s 64
f 3//8 4//11 8//23 7//21
g Object_Box_01
s 2
f 9//27 10//30 12//36 11//33
s 4
f 13//39 15//44 16//48 14//42
s 8
f 9//25 11//31 15//43 13//37
s 16
f 10//28 14//40 16//46 12//34
s 32
f 9//26 13//38 14//41 10//29
s 64
f 11//32 12//35 16//47 15//45

# End of file


------------------------------

Just for clarity.

Up until recently, I was not sure exactly what Nvil was doing on export to .obj, well apart from copying everything into memory before export. The merging of all mesh was a guess. However, after IStonia posted the debug versions to >this thread< for testing, it does show the merge mesh being used for .obj export.

« Last Edit: April 20, 2014, 10:41:55 pm by steve »

  • No avatar
  • Posts: 3705
  • Developer
  • Administrator
  • Polygon
April 21, 2014, 12:45:55 am
Try this. It should be a lot faster on obj export.
http://www.digitalfossils.com/Download/NVil-Apr-16-14.rar

steve, on obj export, objects are duplicated then combine into one object. The data will be further modify for exporting. The duplication will consume memory. When combine, it does not merge meshes, so it consumes little memory and takes little time. The problem I found is I used a bad algorithm on polygon sorting.

  • No avatar
  • Posts: 3705
  • Developer
  • Administrator
  • Polygon
April 21, 2014, 04:16:02 am
Try this. The obj import speed is improved in case of separating into objects.
http://www.digitalfossils.com/Download/NVil-Apr-17-14.rar

Darcvizer, please let me know the test result.
« Last Edit: April 21, 2014, 04:17:41 am by IStonia »

  • No avatar
  • Posts: 306
  • Triangle
April 21, 2014, 12:46:13 pm
Works very fast, 7 seconds export, import 32 seconds.For me it is very good news, thanks.
You're going to accelerate the work of the viewport?

  • No avatar
  • Posts: 2101
  • Polygon
April 21, 2014, 09:31:58 pm
steve, on obj export, objects are duplicated then combine into one object. The data will be further modify for exporting. The duplication will consume memory. When combine, it does not merge meshes, so it consumes little memory and takes little time. The problem I found is I used a bad algorithm on polygon sorting.

Which ever way you look at it, the .obj exporter, by default, merges mesh.

So is it the same issue with the Nvil "Combine" and "Combine(merge mesh) tools, a bad algorithm, that makes Nvil take far too long to merge large polycount mesh? It can take several minute to merge large polycount mesh, but (With you fixing the .obj exporter/importer) only several seconds to export/import via .obj, which does the same.

  • No avatar
  • Posts: 3705
  • Developer
  • Administrator
  • Polygon
April 22, 2014, 10:29:37 am
Yes, when writing into file, they are merged into one mesh.

The obj export shares the same function with object Combine, but not the object Combine(Merge Meshes).

The object/mesh Split still has performance problem. The same to polygon Split/Duplicate functions when all polygons are selected. I am currently fixing these and almost finish.

  • No avatar
  • Posts: 3705
  • Developer
  • Administrator
  • Polygon
April 23, 2014, 07:00:34 pm
try this
http://www.digitalfossils.com/Download/NVil-Apr-19-14.rar

Also the Boolean performance is improved.

  • No avatar
  • Posts: 306
  • Triangle
April 23, 2014, 07:32:48 pm
Once they started talking for boolean, then the video shows that in some cases it does not work, and it would be good to make it work on a mesh with holes

https://www.youtube.com/watch?v=MwzpYjap3DI&feature=youtu.be
http://yadi.sk/d/C_iStkCrMpqHoÂ