1
$\begingroup$

I'm modeling a bridge and because the scene is going pretty far in the distance I decided to use the adaptive subdivision function.

I have an object that has an array modifier that repeat it self 100 times, the object has 32 verts what normally does not give me any problem to render.

Now if I render my scene its taking 15 minutes to even start rendering and blender is working on Building BVH <Object> and when its doing this my memory peaks at 12GB what is absurd for this scene.

What did I try:

  • disabling my HDRI and use a simple light setup.

  • removing verts up to where I had 4 verts left.

  • removing the material.

I have the feeling that I'm missing something.

Image of my modifier setup included

enter image description here

$\endgroup$
  • $\begingroup$ What is the vertex count in your scene? Is your camera very close to one of the instances that have adaptive subdivision on? Remember adaptive subdivision is only generated when you tab in and out of edit mode. The vertex count can crank up too high if you exit edit mode when zoomed close to the mesh. Go into camera view and tab in and out of edit mode before render. $\endgroup$ – kheetor May 9 '18 at 16:43
  • $\begingroup$ The viewport in not the problem, its the render that generates the high memory. Total verts are 41,114. $\endgroup$ – S.Visser May 9 '18 at 16:45
  • $\begingroup$ Your dicing scale for rendering is 8-fold compared to view so even if viewport works well your render could be absolutely murdered by the generated detail level. $\endgroup$ – kheetor May 9 '18 at 16:50
  • $\begingroup$ It seems to go away when I take another camera perspective. Well this is why its called experimental mode I guess. $\endgroup$ – S.Visser May 9 '18 at 17:45
2
$\begingroup$

It looks like you might be better off not using adaptive subdivision. According to the docs, this property makes muti user objects single user objects, causing increased memory.

This might mean that its separating each iteration of the array (which would make sense as each one needs to be subdivided differently.)

Another solution might be to shorten your array a bit, then manually duplicate the array and lower the subsurf level.

Just out of curiosity, what happens if you move the array below the subsurf? (Other than messing up your seams) Does that help with render times at all?

$\endgroup$
  • $\begingroup$ Subsurf after the array should be the proper order to do it. The docs say nothing about modifier-generated geometry that are not quite instances. $\endgroup$ – kheetor May 9 '18 at 17:00
  • $\begingroup$ In my tests I found no difference between applying an array modifier or not when used with adaptive subdivision. Both render results are identical overlapping perfectly. Nor is there any difference in memory usage during rendering. Tested with 100 instances of 8-vert mesh. So I will have to disagree with the hypothesis made in this answer. $\endgroup$ – kheetor May 9 '18 at 17:16
  • $\begingroup$ Ok cool, thanks for the advice. I rarely use arrays but i'll keep that in mind. $\endgroup$ – Phil Alcorn May 9 '18 at 17:26
  • $\begingroup$ I can't switch because then it's not adaptive anymore. I changed the camera perspective and this seems to help. Now I'm peaking at 400M $\endgroup$ – S.Visser May 9 '18 at 17:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.