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

Reply via email to