OK, thanks Alok. It's not a biggie in any case! DAN
On Thu, May 29, 2014 at 1:53 PM, Alok Gandhi <alok.gandhi2...@gmail.com> wrote: > Hi Dan, > > I am not sure but I think you could edit the compound for resolving > tokens. The core node does require absolute file paths, I am afraid > hardcoding low-level c++ for resolving tokens might take some time which > unfortunately I do not have right now. > > However, it is a good point that I will take into cosideration for future > updates. > > Cheers ! > > > On Thu, May 29, 2014 at 5:25 PM, Dan Yargici <danyarg...@gmail.com> wrote: > >> Hi Alok. >> >> I'm using this for the first time and loving it, however my immediate >> crit would be that it would be great if it could resolve tokens. In my >> case [Project Path] specifically. >> >> Thanks again for this! >> >> DAN >> >> >> >> On Sun, Nov 17, 2013 at 9:52 AM, Dan Yargici <danyarg...@gmail.com> >> wrote: >> >>> Thanks Alok, much appreciated! >>> >>> DAN >>> >>> >>> On Sun, Nov 17, 2013 at 3:01 AM, Alan Fregtman <alan.fregt...@gmail.com> >>> wrote: >>> >>>> At work we are, yeah. I'll see about getting it compiled. >>>> >>>> >>>> >>>> On Sat, Nov 16, 2013 at 4:16 PM, Alok Gandhi <alok.gandhi2...@gmail.com >>>> > wrote: >>>> >>>>> Yea it may be that. I presume you are using linux. If not then test >>>>> out the node to check if it works. >>>>> >>>>> >>>>> On Sat, Nov 16, 2013 at 4:01 PM, Alan Fregtman < >>>>> alan.fregt...@gmail.com> wrote: >>>>> >>>>>> Interesting... I wonder if this is why I've been having problems with >>>>>> KP's PC2 reader with huge files just over 2GB? I ended up splitting my >>>>>> meshes to work around it, but now I wonder... >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Sat, Nov 16, 2013 at 2:18 PM, Alok Gandhi < >>>>>> alok.gandhi2...@gmail.com> wrote: >>>>>> >>>>>>> Hi All, >>>>>>> >>>>>>> I have update the ReadPC2ICE node to version 1.1 >>>>>>> >>>>>>> You can find the addon here <http://bit.ly/1axgUea> and code here >>>>>>> <http://bit.ly/17ZKRpU>. >>>>>>> >>>>>>> Change Log: >>>>>>> >>>>>>> Bug fixes: >>>>>>> >>>>>>> >>>>>>> >>>>>>> · Point data for files over 2 GB was not read correctly due >>>>>>> to limitations of <int> data type. It is changed to <__int64> which can >>>>>>> handle the data > 2 GB. Now the node can easily read files over 2 GB. >>>>>>> >>>>>>> >>>>>>> >>>>>>> *Notes* >>>>>>> >>>>>>> · The same changes needs to be applied for >>>>>>> *KP_PointCacheReader* for this bugfix. I am not aware if Kai has >>>>>>> fixed this already in other updates to his code. But the one >>>>>>> <http://sculptwork.com/rr/bak/kaipirinha/KP_PointCacheV25.zip> I >>>>>>> had from rray.de does not have this change. Kai, if you are >>>>>>> listening can you confirm that? >>>>>>> >>>>>>> >>>>>>> >>>>>>> · The code for this bugfix is not supported on Linux. >>>>>>> However, in case you want to compile for Linux, please note that the >>>>>>> <__int64> data type for windows translates to <long long> on a gcc >>>>>>> compiler >>>>>>> for Linux. I will add support for Linux once I have a machine with >>>>>>> Linux up >>>>>>> and running. Till then you have to change the code yourself. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> · Suppressed unnecessary warning messages in cases of pc2 >>>>>>> file not specified and unable to open file. They were kind of annoying. >>>>>>> Just uncomment my code lines to bring them back if you want. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> New features: >>>>>>> >>>>>>> >>>>>>> >>>>>>> · When working with pc2 files I always missed the ability >>>>>>> to know beforehand the start and end frame of the file. Now the node >>>>>>> supports this. There are two new output ports that furnish the start and >>>>>>> end frames as scalars. You can use this to do time warps, offsets, view >>>>>>> them in viewports as custom attributes or whatever else you might find >>>>>>> it >>>>>>> useful for. >>>>>>> >>>>>>> Please feel free to mail me if you have any question or >>>>>>> problems/bugs with this addon. >>>>>>> >>>>>>> Thanks. >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Mon, Nov 4, 2013 at 9:00 PM, Alok Gandhi < >>>>>>> alok.gandhi2...@gmail.com> wrote: >>>>>>> >>>>>>>> And here is the github for the code: >>>>>>>> >>>>>>>> https://github.com/alok1974/KP_PointCache-Reader-ICE-Node >>>>>>>> >>>>>>>> >>>>>>>> On Mon, Nov 4, 2013 at 8:42 PM, Alok Gandhi < >>>>>>>> alok.gandhi2...@gmail.com> wrote: >>>>>>>> >>>>>>>>> Here is the code for the pc2 reader: >>>>>>>>> >>>>>>>>> ---------------------------------------------------------- >>>>>>>>> """ >>>>>>>>> .PC2 File Format: >>>>>>>>> You can create or modify PointCache2 files by hand using the >>>>>>>>> following file format. >>>>>>>>> The start of the file is a header containing: >>>>>>>>> >>>>>>>>> char cacheSignature[12]; // Will be 'POINTCACHE2' followed by >>>>>>>>> a trailing null character. >>>>>>>>> int fileVersion; // Currently 1 >>>>>>>>> int numPoints; // Number of points per sample >>>>>>>>> float startFrame; // Corresponds to the UI value of >>>>>>>>> the same name. >>>>>>>>> float sampleRate; // Corresponds to the UI value of >>>>>>>>> the same name. >>>>>>>>> int numSamples; // Defines how many samples are >>>>>>>>> stored in the file. >>>>>>>>> >>>>>>>>> Be sure to check the version number. If it isn't 1, then don't >>>>>>>>> mess with the file, >>>>>>>>> as the format will change in the future. >>>>>>>>> >>>>>>>>> Following the header, there is a straight dump of all the cache >>>>>>>>> samples (which are snapshots of all the point positions for an >>>>>>>>> object). >>>>>>>>> Each sample is stored one after the other as a flat array of x/y/z >>>>>>>>> floats >>>>>>>>> for each point (so each sample is (numPoints * sizeof(float) * 3) >>>>>>>>> bytes). >>>>>>>>> """ >>>>>>>>> >>>>>>>>> >>>>>>>>> # Note for Alan : You might want to extend this class by adding a >>>>>>>>> method to fetch the frame data >>>>>>>>> # for a prticular frame. It is trivial to do so, >>>>>>>>> just look at my code below for >>>>>>>>> # getting bounding box data. >>>>>>>>> >>>>>>>>> import os >>>>>>>>> import sys >>>>>>>>> import time >>>>>>>>> from struct import unpack >>>>>>>>> >>>>>>>>> class CacheObject(object): >>>>>>>>> def __init__(self, pth): >>>>>>>>> self._dFile = None >>>>>>>>> self.fPath = pth >>>>>>>>> self._headerString = '' >>>>>>>>> self._cacheFileVersionNumber = 0 >>>>>>>>> self._pCount = 0 >>>>>>>>> self._startFrame = 0 >>>>>>>>> self._sampleRate = 0 >>>>>>>>> self._numSamples = 0 >>>>>>>>> self._mshBBox = {} >>>>>>>>> self._headerRead = False >>>>>>>>> self._dataRead = False >>>>>>>>> >>>>>>>>> def _setFile(self): >>>>>>>>> if not self._dFile: >>>>>>>>> self._dFile = open(self.fPath, 'rb') >>>>>>>>> self._msh = >>>>>>>>> os.path.splitext(os.path.basename(self.fPath))[0] >>>>>>>>> >>>>>>>>> if not self._headerRead: >>>>>>>>> self._processHeader() >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> def _processHeader(self): >>>>>>>>> self._headerRead = True >>>>>>>>> >>>>>>>>> self._setFile() >>>>>>>>> >>>>>>>>> dfile = self._dFile >>>>>>>>> >>>>>>>>> self._headerString = unpack('12s', dfile.read(12))[0] >>>>>>>>> self._cacheFileVersionNumber = unpack('I', >>>>>>>>> dfile.read(4))[0] >>>>>>>>> self._pCount = unpack('L', dfile.read(4))[0] >>>>>>>>> self._startFrame = unpack('f', dfile.read(4))[0] >>>>>>>>> self._sampleRate = unpack('f', dfile.read(4))[0] >>>>>>>>> self._numSamples = unpack('L', dfile.read(4))[0] >>>>>>>>> >>>>>>>>> if not self._dataRead: >>>>>>>>> dfile.flush() >>>>>>>>> dfile.close() >>>>>>>>> self._dFile = None >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> def _processBBoxData(self): >>>>>>>>> self._dataRead = True >>>>>>>>> self._setFile() >>>>>>>>> >>>>>>>>> dfile = self._dFile >>>>>>>>> data = {} >>>>>>>>> >>>>>>>>> >>>>>>>>> s = int(self._startFrame) >>>>>>>>> e = int(s + self._numSamples) >>>>>>>>> >>>>>>>>> for f in range(s, e): >>>>>>>>> xArr = [] >>>>>>>>> yArr = [] >>>>>>>>> zArr = [] >>>>>>>>> >>>>>>>>> for i in range(self._pCount): >>>>>>>>> x = unpack('f', dfile.read(4))[0] >>>>>>>>> y = unpack('f', dfile.read(4))[0] >>>>>>>>> z = unpack('f', dfile.read(4))[0] >>>>>>>>> >>>>>>>>> xArr.append((x, i)) >>>>>>>>> yArr.append((y, i)) >>>>>>>>> zArr.append((z, i)) >>>>>>>>> >>>>>>>>> # min\max data >>>>>>>>> d = (max(xArr)[0], max(yArr)[0], max(zArr)[0], >>>>>>>>> min(xArr)[0], min(yArr)[0], min(zArr)[0]) >>>>>>>>> >>>>>>>>> data[f] = { 0:(d[3], d[4], d[5]), >>>>>>>>> 1:(d[3], d[1], d[5]), >>>>>>>>> 2:(d[0], d[1], d[5]), >>>>>>>>> 3:(d[0], d[4], d[5]), >>>>>>>>> 4:(d[3], d[4], d[2]), >>>>>>>>> 5:(d[3], d[1], d[2]), >>>>>>>>> 6:(d[0], d[1], d[2]), >>>>>>>>> 7:(d[0], d[4], d[2]), >>>>>>>>> } >>>>>>>>> >>>>>>>>> self._mshBBox = data >>>>>>>>> >>>>>>>>> dfile.flush() >>>>>>>>> dfile.close() >>>>>>>>> self._dFile = None >>>>>>>>> >>>>>>>>> def getHeaderInfo(self): >>>>>>>>> self._processHeader() >>>>>>>>> return {'HEADER': self._headerString, >>>>>>>>> 'VERSION': self._cacheFileVersionNumber, >>>>>>>>> 'NB_POINTS': self._pCount, >>>>>>>>> 'START_FRAME': self._startFrame, >>>>>>>>> 'SAMPLE_RATE': self._sampleRate, >>>>>>>>> 'NB_SAMPLES': self._numSamples,} >>>>>>>>> >>>>>>>>> def getBBoxData(self): >>>>>>>>> self._processBBoxData() >>>>>>>>> return self._mshBBox >>>>>>>>> >>>>>>>>> if __name__ == '__main__': >>>>>>>>> f = r'<pc2 file path>' >>>>>>>>> o = CacheObject(f) >>>>>>>>> print o.getHeaderInfo() >>>>>>>>> >>>>>>>>> --------------------------------------------------------- >>>>>>>>> >>>>>>>>> >>>>>>>>> On Mon, Nov 4, 2013 at 8:37 PM, Alok Gandhi < >>>>>>>>> alok.gandhi2...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> Hmm, there are a few options to load the data in reader operator. >>>>>>>>>> Stream, Frame or Memory. Try selecting the frame or memory options. >>>>>>>>>> By >>>>>>>>>> default, it is the stream which might have problems similar to one >>>>>>>>>> you >>>>>>>>>> have. Anyways, in addition to the ICE Node, few years back, I also >>>>>>>>>> wrote a >>>>>>>>>> python reader class to read the pc2 file data directly through >>>>>>>>>> python. Not >>>>>>>>>> optimised using numpy or scipy but it can still let you investigate >>>>>>>>>> the >>>>>>>>>> contents of a ,pc2 file in a human-readable format. I will also post >>>>>>>>>> the >>>>>>>>>> code to it. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Mon, Nov 4, 2013 at 8:33 PM, Alan Fregtman < >>>>>>>>>> alan.fregt...@gmail.com> wrote: >>>>>>>>>> >>>>>>>>>>> Intermittent empty frames. Sometimes they work, sometimes not. >>>>>>>>>>> Mind you... it's very dense topo, and the pc2 file is about 2GB. It >>>>>>>>>>> might >>>>>>>>>>> be reaching some sort of limit somewhere. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Mon, Nov 4, 2013 at 8:29 PM, Alok Gandhi < >>>>>>>>>>> alok.gandhi2...@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> You do realise that my node is an exact copy of the >>>>>>>>>>>> KP_PointCache Reader Operator. Only difference is that instead of >>>>>>>>>>>> applying >>>>>>>>>>>> the pointposition on the host mesh posarray, it furnishes the same >>>>>>>>>>>> data in >>>>>>>>>>>> the vector array format in ICE. >>>>>>>>>>>> >>>>>>>>>>>> I am not sure if reading the pointpositions in ICE through my >>>>>>>>>>>> node will give you any extra functionality that Kai's original >>>>>>>>>>>> operator >>>>>>>>>>>> can't. But anyways, feel free to try it. >>>>>>>>>>>> >>>>>>>>>>>> Btw, may I know what is the issue that you are having ? >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Mon, Nov 4, 2013 at 8:25 PM, Alan Fregtman < >>>>>>>>>>>> alan.fregt...@gmail.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Great! Thank you. Just today we've been experiencing an issue >>>>>>>>>>>>> with KP's reader for this one specific mesh. We're temporarily >>>>>>>>>>>>> using >>>>>>>>>>>>> Alembic manually, but I'm curious if your reader will be any >>>>>>>>>>>>> better. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Mon, Nov 4, 2013 at 7:45 PM, Alok Gandhi < >>>>>>>>>>>>> alok.gandhi2...@gmail.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Surething, will post the source probably on github. My old >>>>>>>>>>>>>> laptop with ubuntu died a few months ago :( so I cant compile it >>>>>>>>>>>>>> myself. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I will post the link here soon. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Sent from my iPhone >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Nov 4, 2013, at 7:20 PM, Alan Fregtman < >>>>>>>>>>>>>> alan.fregt...@gmail.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> Hey Alok, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Any chance for a Linux compile? Or sources to attempt a >>>>>>>>>>>>>> compile ourselves? >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Mon, Nov 4, 2013 at 11:21 AM, Alok Gandhi < >>>>>>>>>>>>>> alok.gandhi2...@gmail.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Glad it helped you. And yea, now thinking in retrospect, you >>>>>>>>>>>>>>> won't need the switch context as the getpointid already does >>>>>>>>>>>>>>> that. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Sent from my iPhone >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Nov 4, 2013, at 9:23 AM, Cristobal Infante < >>>>>>>>>>>>>>> cgc...@gmail.com> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> VERY HANDY Alok, I can confirm you don't need the switch >>>>>>>>>>>>>>> context node, all the rest worked fine.. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> By the way, the BIG difference in relation to the default >>>>>>>>>>>>>>> "Cache on File" read node, is that you are able to move your >>>>>>>>>>>>>>> cached >>>>>>>>>>>>>>> geometry >>>>>>>>>>>>>>> around the scene. So if you have a last minute layout change >>>>>>>>>>>>>>> you can deal with it in rendering. This is way we've stuck with >>>>>>>>>>>>>>> KP op >>>>>>>>>>>>>>> reader so far.. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On 4 November 2013 13:58, Alok Gandhi < >>>>>>>>>>>>>>> alok.gandhi2...@gmail.com> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi Cristobal, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> The node output a single array of pointpositions. So you >>>>>>>>>>>>>>>> have to convert the array to per point attribute. A getpointid >>>>>>>>>>>>>>>> plugged into >>>>>>>>>>>>>>>> the select in array and them set pointposition will do the >>>>>>>>>>>>>>>> trick. Of course >>>>>>>>>>>>>>>> you know that the target mesh or pointcloud should have same >>>>>>>>>>>>>>>> number points >>>>>>>>>>>>>>>> as in the pc2 file. Also you might need a switch context node >>>>>>>>>>>>>>>> before set >>>>>>>>>>>>>>>> pointposition. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> In case of an empty pointcloud, it is easier. Just plug the >>>>>>>>>>>>>>>> output of the node directly into an add points node. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Sent from my iPhone >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Nov 4, 2013, at 8:13 AM, Cristobal Infante < >>>>>>>>>>>>>>>> cgc...@gmail.com> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi Alok, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Thanks again for sharing this tool, we still rely KP pc2 >>>>>>>>>>>>>>>> reader so having an alternative is really handy. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I was guessing "Read PC2 File" > "Set Point Position"? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> But I am getting a structure mismatch, probably doing the >>>>>>>>>>>>>>>> wrong thing! >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>> Cris >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On 4 November 2013 05:40, Alok Gandhi < >>>>>>>>>>>>>>>> alok.gandhi2...@gmail.com> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Ah I see, I was confused when you said " i haven't tried >>>>>>>>>>>>>>>>> multiple files per frame (does softimage even export pc2 >>>>>>>>>>>>>>>>> files this way?) >>>>>>>>>>>>>>>>> ". >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Well in that, sure you can export single file per frame >>>>>>>>>>>>>>>>> per object through KP_PointCache manager, you simply have to >>>>>>>>>>>>>>>>> select the >>>>>>>>>>>>>>>>> start and end frame as the same. PC2 file format have the >>>>>>>>>>>>>>>>> notion of >>>>>>>>>>>>>>>>> "samples" rather than frame, so if you have one sample per >>>>>>>>>>>>>>>>> frame set then >>>>>>>>>>>>>>>>> basically you are exporting one data set (pointpositions) per >>>>>>>>>>>>>>>>> frame. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Mon, Nov 4, 2013 at 12:26 AM, Steven Caron < >>>>>>>>>>>>>>>>> car...@gmail.com> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> no one said that you could have multiple objects in the >>>>>>>>>>>>>>>>>> same .pc2 file. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On Sun, Nov 3, 2013 at 8:37 PM, Alok Gandhi < >>>>>>>>>>>>>>>>>> alok.gandhi2...@gmail.com> wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> I am a little confused... >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> For sure, you cannot have multiple objects in the same >>>>>>>>>>>>>>>>>>> .pc2 file, the format simply doesn't support that. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> >>>> >>>> >>> >> > > > -- >