If you have a look at the docs for pcfilter, it gives you some VEX code that’s
the equivalent functionality. You can tweak to suit your needs.
Pasted in from the docs:
- - - -
float pcfilter(int handle; string channel)
{
float sum, w, d;
float value, result = 0;
while (pciterate(handle))
{
pcimport(handle, "point.distance", d);
pcimport(handle, channel, value);
w = 1 - smooth(0, radius, d);
sum += w;
result += w * value;
}
result /= sum;
return result;
}
pcfilter takes the points that were opened by the point cloud and produces a
filtered value. The following equation shows how the individual points are
weighted.
w_i = 1-smooth(0, maxd*1.1, d_i);
maxd is the farthest point, and w_i is the weight for a given point at distance
(d_i). Points that are closer to the center will be weighted higher with that
formula, rather than it being an average.
> On 26 Apr 2017, at 19:25, Steven Caron <[email protected]> wrote:
>
> So pcfilter has weighting built into it?
>
> I guess I want to customize this weighting should I not use pcfilter? and use
> pcfind and loop over the particles?
>
>
> On Wed, Apr 26, 2017 at 11:18 AM, Andy Nicholas <[email protected]
> <mailto:[email protected]>> wrote:
> Yep, I’m afraid I’m a complete VEX convert now. I never used to be!
>
> Cris, don’t mind me posting stuff like that, I’m just doing it in case it’s
> useful to anyone who’s trying to get into VEX. Actually, when I was learning
> to do all the point cloud stuff, I found it useful to see the VEX when I was
> trying to understand how to hook up the pointcloud VOPs. I (still) don’t
> think it’s obvious how to do it, especially when you start thinking about if
> it’s necessary to use pcclose() and where that should be wired.
>
> It’s one of the reasons I moved to VEX, things like “loops" and “if”
> statements are much easier to understand in VEX than VOPs.
>
>
>
>> On 26 Apr 2017, at 19:07, Steven Caron <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>> Thanks guys! I didn't want to use VEX even though I might need to in the
>> long run.
>>
>> On Wed, Apr 26, 2017 at 10:57 AM, Andy Nicholas <[email protected]
>> <mailto:[email protected]>> wrote:
>> Yep, what Cris said. Here’s some VEX you can drop in a Point Wrangle if you
>> want to try that approach:
>>
>> float radius = 1.0;
>> int maxpts = 50;
>> int handle = pcopen(0, "P", @P, radius, maxpts);
>> @P = pcfilter(handle, "P");
>>
>>
>>> On 26 Apr 2017, at 18:37, Cristobal Infante <[email protected]
>>> <mailto:[email protected]>> wrote:
>>>
>>> pcopen > pcfilter (P) will give you the nearest positions.
>>>
>>>
>>>
>>> On 26 April 2017 at 18:27, Steven Caron <[email protected]
>>> <mailto:[email protected]>> wrote:
>>> i hate to do it but i gotta ask this group because of our shared ICE
>>> knowledge...
>>>
>>> what is the proper way to get closest points and average their position and
>>> update the point position?
>>>
>>> pcfind gives me an integer array, but how do i look up those indices and
>>> get their point position?
>>>
>>> pcopen, then pcimport, do work, then pcexport seems like the right thing to
>>> do, should i just ignore pcfind?
>>>
>>> thanks
>>> steven
>>>
>>> ------
>>> Softimage Mailing List.
>>> To unsubscribe, send a mail to [email protected]
>>> <mailto:[email protected]> with "unsubscribe" in the
>>> subject, and reply to confirm.
>>>
>>> ------
>>> Softimage Mailing List.
>>> To unsubscribe, send a mail to [email protected]
>>> <mailto:[email protected]> with "unsubscribe" in the
>>> subject, and reply to confirm.
>>
>>
>> ------
>> Softimage Mailing List.
>> To unsubscribe, send a mail to [email protected]
>> <mailto:[email protected]> with "unsubscribe" in the
>> subject, and reply to confirm.
>>
>> ------
>> Softimage Mailing List.
>> To unsubscribe, send a mail to [email protected]
>> <mailto:[email protected]> with "unsubscribe" in the
>> subject, and reply to confirm.
>
>
> ------
> Softimage Mailing List.
> To unsubscribe, send a mail to [email protected]
> <mailto:[email protected]> with "unsubscribe" in the
> subject, and reply to confirm.
>
> ------
> Softimage Mailing List.
> To unsubscribe, send a mail to [email protected] with
> "unsubscribe" in the subject, and reply to confirm.
------
Softimage Mailing List.
To unsubscribe, send a mail to [email protected] with
"unsubscribe" in the subject, and reply to confirm.