Primitive prim = (CRef)ctx.GetInputValue(0,0);
PolygonMesh mesh(prim.GetGeometry(0,siConstructionModeAnimation));
CVertexRefArray outPoints = outMesh.GetVertices();
CVector3Array pos = outPoints.GetPositionArray();

I'm calling that block of code from inside of a customOperator, ok ?
There is an Envelope Operator below. It has some bones
 so the mesh is being deformed by that bones.

PolygonMesh
     - Secondary Shape Modeling
     - Animation
          - MyOperator
          - EnvelopeOperator ->
      -Shape Modeling
     - Modeling

How to get result of  "EnvelopeOperator" as an Array of absolute vectors, from
within "MyOperator" Update callback ?
Actually  "pos " is filled with zeroes.

Hope, you get what I mean :)

Thanks





On Sat, Apr 13, 2013 at 3:04 AM, Raffaele Fragapane <
[email protected]> wrote:

> If you transform the vectors by the global kine transform of the object
> they come from they will be in world space.
> Assuming you are reading from another object and getting its point
> positions (and those are local) and want their global coordinates the above
> step is what you need.
> If you want them in the space of another object then you will have to do
> the above and also multiply by the inverse of the object's global transform
> you want them to be in the space of.
>
> You can chain those two matrices outside the loop taking care of the
> pointpos vectors, as they are per object, to save some cycles.
>
> Unless you were asking for something else.
>
>
> On Sat, Apr 13, 2013 at 6:45 AM, Bartosz Opatowiecki <
> [email protected]> wrote:
>
>>  Actually it is false, because I got deformed vertices
>> into my deformer any way. So anything I do inside my operator
>> is relative to the previous operator in the stack...
>>
>> Instead, I want to get vertices in world space or in X3DObject space
>> fed into my deformer. How can I do that ?
>>
>> W dniu 2013-04-12 22:33, Alan Fregtman pisze:
>>
>> Yeah, it should.
>>
>>  You're reading from the Modeling stack, so the envelope didn't happen
>> at that point.
>>
>>  Then you're setting the positions, so anything between your operator
>> and the Modeling marker might as well not exist because it's overridden by
>> your data.
>>
>>
>>
>> On Fri, Apr 12, 2013 at 4:26 PM, Bartosz Opatowiecki <
>> [email protected]> wrote:
>>
>>>  Hey,
>>>
>>> Lets forget about node transformations, only vertices are being deformed.
>>> If, within an update function I get a geometry like this:
>>>
>>> Primitive prim = (CRef)ctx.GetInputValue(0,0);
>>> PolygonMesh mesh(prim.GetGeometry(0,siConstructionModeModeling));
>>> CVertexRefArray outPoints = outMesh.GetVertices();
>>> CVector3Array pos = outPoints.GetPositionArray();
>>>
>>> and put its data back:
>>>
>>> Primitive outPrim(ctx.GetOutputTarget());
>>> PolygonMesh outMesh(outPrim.GetGeometry(0,siConstructionModeModeling));
>>> CVertexRefArray outPoints = outMesh.GetVertices();
>>> outPoints.PutPositionArray(pos);
>>>
>>> my output mesh should stay still even if envelope operator is below it.
>>> Am I right ?
>>>
>>> W dniu 2013-04-12 20:10, Alan Fregtman pisze:
>>>
>>> From what you said you're already setting the pointpositions (aka
>>> deforming), so you have *already* *taken over*. You can set the
>>> deformation to be absolute if your data is absolute and taking the object's
>>> transform into consideration.
>>>
>>>  If you mean if you can disable operators downwards... no, you can't.
>>>
>>>
>>>
>>> On Fri, Apr 12, 2013 at 12:18 PM, Bartek Opatowiecki <
>>> [email protected]> wrote:
>>>
>>>> Hi,
>>>>
>>>>  I'm working on a customOperator which is deforimg a mesh.
>>>> It is sitting at the top of an animation construction mode .
>>>> I would like it to take over the deformation at some point
>>>> and ignore entire construction stack below it.
>>>>
>>>>  thanks,
>>>> Bartek
>>>>
>>>
>>>
>>>
>>
>>
>
>
> --
> Our users will know fear and cower before our software! Ship it! Ship it
> and let them flee like the dogs they are!
>

Reply via email to