Just found Jason Osipa's half-started
http://docs.osipaentertainment.com/Maya_API_Python_Attribute_and_Type_Reference
which suggests there isn't an easy way, but I also found his oeRay.py
which is a plugin-ified version of closestIntersection, which is very
similar to the function I'm interested in... so I think I have a good
idea of how to do it the hard way if no easy way exists, by which I
mainly mean PyMEL.

But I'd still love to know if there's an easy way.

Cheers,
P

On Feb 21, 6:52 pm, pjrich <[email protected]> wrote:
> So far I've been able to extract the data through a roundabout method,
> but I don't have confidence in the result. I'm trying to find the
> points in space where a ray intersects a mesh, but though it's in
> world space and the ray should be passing all the way through the
> object I'm apparently only getting 1 intersection at (0,0,0). I can
> set it to "direction = Both" but in that case hitRayParams, which
> should return the distance, shows two intersections at the same
> distance, which I believe means it's just hitting both sides of the
> same polygon.
>
> hitPoints = om.MFloatPointArray()
> hit = fnMesh.allIntersections(raySource, rayDir, faceIds, triIds,
> idsSorted, worldSpace, maxParam, testBothDirections, accelParams,
> sortHits, hitPoints, hitRayParams, hitFaces, hitTris, hitBarys1,
> hitBarys2, tolerance)
> hitPointsList = [om.MFloatPoint() for i in range(hitPoints.length())]
> for x in hitPointsList:
>   print "hitpoint:", x[0], x[1], x[2], x[3]
>
> So how do I get all the intersections in world space?
>
> Thanks,
> p
>
> On Feb 21, 2:57 pm, pjrich <[email protected]> wrote:
>
>
>
> > I'm using a python wrapper of fnMesh.allIntersections, which uses a
> > number of other wrappers including MFloatPointArray() -- when I try to
> > get the contents of the array I only get a pointer to the array's
> > wrapper (I think):
>
> > <maya.OpenMaya.MFloatPointArray; proxy of <Swig Object of type
> > 'MFloatPointArray *' at 0x23fed220> >
>
> > I don't know enough about the API to use MFloatPointArray.get(), I get
> > errors like:
>
> > # NotImplementedError: Wrong number of arguments for overloaded
> > function 'MFloatPointArray_get'.
> > #   Possible C/C++ prototypes are:
> > #     get(float [][4])
> > #     get(double [][4])
>
> > Is there an easy way to get these kinds of values with pymel, or to
> > work with these wrappers in general, besides learning C++? The Maya
> > API docs all seem to assume I already know it.

-- 
http://groups.google.com/group/python_inside_maya

Reply via email to