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. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> >>>> >>>> >>>> >>>> -- >>>> >>> >>> >>> >>> -- >>> >> >> >> >> -- >> > > --