WrapX 1.3.4

Released 29 June 2015

This is a first release with python extension module included.

Python Extension Module

You can find it in lib/wrap.so. Extension compiled with Python 2.7 on CentOS 6 and provided with all required libraries, so it must work on all modern Linux distributions. To use module just add its path to sys.path variable:

>> import sys
>> sys.path.append(‘/Path/To/R3DS_WrapX_1.3.4_Linux_64-Bit/lib’)
>> import wrap
>> print wrap.version
1.3.4

We also added two activation-related functions: wrap.isActivated() and wrap.activate()

One limitation of current extension is that it not implements wrap.extrapolate() function. In the next update we will fix that.

What about Windows?

Since WrapX Python extension currently builds with GCC, then it’s incompatible with Python interpreters that are embedded in programs like Autodesk Maya. We are working on this. Write us a letter if you need it.


WrapX 1.3.4

Released 29 June 2015

This is a minor fix with some enchancements of usability.

Checking of disconnected basemesh polygons in non-rigid registration>

Non-rigid registration requires that all polygons of basemesh must be connected. There is possibility that basemesh created for example in DAZ Studio may contain eyes and lashes which are not connected to the body. In previous versions it was causing wrap.nonRigidRegistration() to run infinitely. Now this situation will raise exception. Proper way to exclude disconnected regions is to use wrap.subset().

Simplified version of wrap.selectPoints() with one viewport

Earlier point selection dialog was requiring two geometries and also generated two sets of corresponding points. We found that there are cases when you may want to work with points independently, like in situations with one marked basemesh and many different scans. So we modified function wrap.selectPoints(). It may also be run with one geometry object now:

geom = wrap.Geom(wrap.demoModelsPath + '/HeadPolygroups_MakeHuman.obj')

# Show dialog with just one geom and no predefined points
wrap.selectPoints(geom)

# Predefined points from left side of the head
points = [
   wrap.PointOnTriangle(3640,0.5,0.0),
   wrap.PointOnTriangle(3753,0.3,0.0),
   wrap.PointOnTriangle(4399,0.19,0.0),
   wrap.PointOnTriangle(3132,0.0,0.6)]

# Show dialog with just one geom and predefined points
points = wrap.selectPoints(geom,None,points)

Added maxDistance parameter to wrap.Geom.pointToPointOnTriangle()

While projecting 3D point onto mesh surface one may want to set limit on the distance between point and the surface. If length of projection is bigger than this distance then exception raised.

Bugfixes

We fixed situation of incorrect loading of previously saved barycentric points (wrap.loadPoints()) when u or v is negative due to floating point precision errors.


WrapX 1.3.2

Released 20 May 2015

Non-visual selection polygons by polygroup

While automating polygon selection you may want to set polygroup name not just from dialog wrap.selectPolygons() but also from command line. So we added function wrap.Geom.selectPolygonsByPolygroup(). You can get list of polygroups using attribute wrap.Geom.polyGroups.

# load model
g = wrap.Geom(wrap.demoModelsPath + "HeadPolygroups_MakeHuman.obj")

# show polygroups
print g.polygroups
['Back', 'EarsOuter', 'Face', 'MouthOuter', 'Mouth', 'Ears', 'EarsInner', 'Eyes', 'EyesOuter', 'Nostrils', 'BackBottom']

# select polygroups
eyePolygons = g.selectPolygonsByPolygroup('Eyes')

# just show already selected polygons in viewport
wrap.selectPolygons(g,eyePolygons)

We would like to answer your questions about it at our forum.

Accurate 3D-point projection onto Geom objects

We updated function wrap.Geom.pointToPointOnTriangle(). Previous version was returning point correspondig to closest vertex. Now function does accurate projection onto closest triangle.

Bugfixes

We fixed crash when importing some OBJ-files made by ZBrush.


WrapX 1.3.1

Released 28 April 2015

Automate control points selection

Sometimes you don’t want to pick control points by hand. For example it’s often a case when basemesh’s control points must correspond to its vertices. Or it may be that you have 3d landmarks on your scan generated by another software.

So in this release we added four functions to wrap.Geom

Now you can automate step of selecting control points.

Python extension

Another feature of this release is that we have now a first working version of python extension module. It’s not included yet in WrapX distribution, but if you want to get a beta, please contact us.

Bugfixes

We fixed memory leak that was related to blendshapes preview generation with textures.