Hi Andrew,

From what I remember loop finding is not multi-threaded in Softimage.

I had a quick look at your code and you have a lot of nested calls in your 
inner loops so you are making a lot of redundant API calls which is likely 
killing your performance. (so switching to a faster path finding algorithm 
won't help)

e.g.  
curMesh.GetEdges().GetItem(current_nbe[i])).GetVertices().GetPositionArray()

You should request the position array once and then reuse that array instead 
requesting it each time you need it which is very inefficient. (same with all 
the other redundant API calls in the code)

Cheers!
--
Brent

From: [email protected] 
[mailto:[email protected]] On Behalf Of Andrew Prostrelov
Sent: 15 July 2017 08:19
To: Official Softimage Users Mailing List. 
https://groups.google.com/forum/#!forum/xsi_list 
<[email protected]>
Subject: Re: EdgeRing ALG for n-gons

It was interesting.
I wrote 2 simple realisation of A* for edges.
First use simple approach g & h.
Second one use h *= 0.001. For thothe who familiar with A* this code line force 
alg to search next branch closer to destination (not to the start location).
Unfortunately  even if we use std::priority_queue as faster container it is 
still very slow on sphere div6+.
I guess the native XSI pathfinde alg for components is a multithreaded.
I don't have threading code experience yet so here is a A* realisation for 
edges:
https://www.dropbox.com/s/8j4p52fo0saiz2s/A.cpp
https://www.dropbox.com/s/tqy610cy6hvphao/A.h
If someone have a time to make it threaded or suggest something - feel free.
------
Softimage Mailing List.
To unsubscribe, send a mail to [email protected] with 
"unsubscribe" in the subject, and reply to confirm.

Reply via email to