Thanks for the input. Filter points with a small value fixed it for me -
happy camper now.

MB




Den 24. marts 2015 kl. 12:34 skrev julien carmagnac
<carmagnacjul...@gmail.com>:

> Morten,
> I already got Vray render error due to geometry import problem.
> In my case, I have floating points without any polygon.
> To quick check it manually you can :
>  - select all objects to check
>  - select all polygon
>  - select all adjacent points
>  - and finally, Invert selection
> If it select points, you can delete them because there are no polygon
> attached to it.
> 
> 2015-03-24 11:40 GMT+01:00 Oscar Juarez < tridi.animei...@gmail.com
> <mailto:tridi.animei...@gmail.com> > :
> > The script only selects the bad polygons, also the one on the blog, they
> > don't do anything else, this will let you identify the polygons that are
> > the problem, but then you have to decide what to do. If the issue comes
> > from overlapping points maybe even a very small smooth might move them
> > apart and avoid the zero area without changing topology.
> > 
> > On Tue, Mar 24, 2015 at 11:10 AM, Morten Bartholdy < x...@colorshopvfx.dk
> > <mailto:x...@colorshopvfx.dk> > wrote:
> > > Thanks a lot Oscar - I will give both methods a shot and see what happens.
> > > 
> > > Morten
> > > 
> > > 
> > > 
> > > 
> > > Den 24. marts 2015 kl. 10:45 skrev Oscar Juarez <
> > > tridi.animei...@gmail.com <mailto:tridi.animei...@gmail.com> >:
> > > 
> > > > this should fix the script, it will select all the polygons that are
> > > > wrong
> > > > 
> > > > si = Application
> > > > epsilon = 0.00001
> > > > 
> > > > # Get PolygonArea DataArray (which is a tuple)
> > > > sel = si.Selection(0)
> > > > attr = sel.ActivePrimitive.GetICEAttributeFromName( "PolygonArea" )
> > > > areaData = attr.DataArray
> > > > 
> > > > #
> > > > # Find the indices of the bad polys
> > > > #
> > > > bad = [ x for x,y in enumerate( areaData ) if y < epsilon]
> > > > 
> > > > # Select the degenerates with a string like 'cube.poly[112,114,155]'
> > > > str_indices = '%s.poly[%s]' % (sel.FullName, ','.join(str(i) for i in
> > > > bad))
> > > > si.SelectGeometryComponents(str_indices)
> > > > 
> > > > On Tue, Mar 24, 2015 at 10:38 AM, Oscar Juarez <
> > > > tridi.animei...@gmail.com
> > > > <mailto:tridi.animei...@gmail.com> > wrote:
> > > > > As the blog post says, degenerate polygons most of the time are zero
> > > > > area
> > > > > polys, a filter points with a very small distance have solved this
> > > > > kind of
> > > > > issues for me on the past, but since your geometry is deformed you
> > > > > have to
> > > > > check if it doesn't break your plotted shape or if it doesn't break
> > > > > other
> > > > > things.
> > > > > 
> > > > > On Tue, Mar 24, 2015 at 9:44 AM, Morten Bartholdy <
> > > > > x...@colorshopvfx.dk
> > > > > <mailto:x...@colorshopvfx.dk> > wrote:
> > > > > > I have a scene which crashes more or less randomly and Arnold prints
> > > > > > an
> > > > > > error that there are degenerate polygons in the scene. The geometry
> > > > > > consist
> > > > > > of 3600 simple cubes which are imported from an alembic file
> > > > > > generated in
> > > > > > Cinema4D, so manually examining every object is not really an
> > > > > > option. So my
> > > > > > question is how to fix the degenerate polygons? I found this script:
> > > > > > http://xsisupport.com/2013/03/13/finding-degenerate-polygons-by-area/
> > > > > > <http://xsisupport.com/2013/03/13/finding-degenerate-polygons-by-area/>
> > > > > > ,
> > > > > > but it fails with an error:
> > > > > > 
> > > > > > This is what I ran:
> > > > > > 
> > > > > > 
> > > > > > si = Application
> > > > > > epsilon = 0.00001
> > > > > > 
> > > > > > # Get PolygonArea DataArray (which is a tuple)
> > > > > > attr = si.Selection(0).ActivePrimitive.GetICEAttributeFromName(
> > > > > > "PolygonArea" )
> > > > > > areaData = attr.DataArray
> > > > > > 
> > > > > > #
> > > > > > # Find the indices of the bad polys
> > > > > > #
> > > > > > bad = [ x for x,y in enumerate( areaData ) if y < epsilon]
> > > > > > 
> > > > > > # Select the degenerates with a string like 'cube.poly[112,114,155]'
> > > > > > si.SelectGeometryComponents( 'Null2.Cube_[%s]' % ','.join(str(i) for
> > > > > > i in
> > > > > > bad) )
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > - and the error:
> > > > > > 
> > > > > > 
> > > > > > Application.SelectMembers("abc_Tiles", "", "")
> > > > > > # ERROR : 2000 - Argument 0 (SelectionList) is invalid
> > > > > > # ERROR : 2001-SELE-SelectGeometryComponents - Argument 0 is invalid
> > > > > > Application.SelectGeometryComponents("Null2.Cube_[]")
> > > > > > # ERROR : Traceback (most recent call last):
> > > > > > # File "<Script Block >", line 14, in <module>
> > > > > > # si.SelectGeometryComponents( 'Null2.Cube_[%s]' % ','.join(str(i)
> > > > > > for i in
> > > > > > bad) )
> > > > > > # File "<COMObject Application>", line 2, in
> > > > > > SelectGeometryComponents
> > > > > > # COM Error: The parameter is incorrect. (0x-7ff8ffa9) - [line 14]
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > Line 14 is this one:  si.SelectGeometryComponents( 'Null2.Cube_[%s]'
> > > > > > %
> > > > > > ','.join(str(i) for i in bad) )
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > So what might be wrong with this one, and when I know which polygons
> > > > > > are
> > > > > > bad, how can I fix them? I am thinking since they dont have an ICE
> > > > > > tree
> > > > > > they might have no ICE PolygonArea property...
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > Best
> > > > > > 
> > > > > > Morten
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > 
> > > 
> > > 

Reply via email to