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


--

Reply via email to