kjknohw
|
|
« on: August 11, 2011, 08:15:39 AM » |
|
Is there a program that can extract the iteration data from fractal extreme images? I want to make a zoom movie without the limitations of fractal extreme but with it's extreme speed.
The next best thing, available to non-programmers to answer, is the rules for how speed, acceleration, and the number of iterations map to the color.
|
|
|
Logged
|
|
|
|
panzerboy
Fractal Lover
Posts: 242
|
|
« Reply #1 on: December 05, 2011, 11:35:40 AM » |
|
I had a look at the .fx files with a hex editor. Its real obvious where the iterations are. The subsection is marked with the string "ITRS". But I just can't fathom the format. I suspect it may be in a compressed format. There should be a new version forthcoming soon perhaps with variable speed zoom control for the movies and certainly a speed boost. Check Bruce Dawson's comments here http://randomascii.wordpress.com/2011/12/04/really-deep-fractal-zoom-movie-much-faster/
|
|
|
Logged
|
|
|
|
SeryZone
Strange Attractor
Posts: 253
Contemplate...
|
|
« Reply #2 on: September 19, 2013, 01:19:26 PM » |
|
Very useful post. .fx files have .bmp structure + iteration data. How to use it - I can't solve for today.
|
|
|
Logged
|
|
|
|
Nahee_Enterprises
|
|
« Reply #3 on: September 19, 2013, 02:53:53 PM » |
|
I had a look at the .fx files with a hex editor. Its real obvious where the iterations are. The subsection is marked with the string "ITRS". But I just can't fathom the format. I suspect it may be in a compressed format. .fx files have .bmp structure + iteration data. How to use it - I can't solve for today. There are multiple values following the "ITRS" character string, and it appears they are in little endian format, in other words, organized with the least significant digits/bytes of a number on the left side and the most significant on the right. And since they are in hexadecimal, a value of x"B0040000" viewed with a hex editor would be equal to 1,200 in decimal. Within the .FX file, the actual iteration value is found starting at the ninth byte after that "ITRS" character string, and I believe it has a length of 4 bytes.
|
|
|
Logged
|
|
|
|
SeryZone
Strange Attractor
Posts: 253
Contemplate...
|
|
« Reply #4 on: October 09, 2013, 09:20:50 PM » |
|
There are multiple values following the "ITRS" character string, and it appears they are in little endian format, in other words, organized with the least significant digits/bytes of a number on the left side and the most significant on the right. And since they are in hexadecimal, a value of x"B0040000" viewed with a hex editor would be equal to 1,200 in decimal. Within the .FX file, the actual iteration value is found starting at the ninth byte after that "ITRS" character string, and I believe it has a length of 4 bytes. I looked - and think, that it's size is 4 bytes (unsigned int or longint in Delphi). But this data is reliably encrypted. My advice: explore and save 640x480 place in the same iteration value. Or disassembly FX library or program - if you know assembler, you can find encrypt algorithm.
|
|
|
Logged
|
|
|
|
Nahee_Enterprises
|
|
« Reply #5 on: October 09, 2013, 09:38:02 PM » |
|
I looked - and think, that it's size is 4 bytes (unsigned int or longint in Delphi). But this data is reliably encrypted. My advice: explore and save 640x480 place in the same iteration value. Or disassembly FX library or program - if you know assembler, you can find encrypt algorithm. It is not encrypted!!! It is as I stated in my previous posting.
|
|
|
Logged
|
|
|
|
panzerboy
Fractal Lover
Posts: 242
|
|
« Reply #6 on: October 10, 2013, 05:08:14 AM » |
|
I made some notes on the .fx file format as when I investigated it a couple of years ago. Remember LSB first!
BMPPOS 0a 0b 0c 0d 32 bit pointer to BMP width 12 13 14 15 height 16 17 18 19 userdatasize 8d palettesize 89 8a 8b 8c 32 bit length of palette info add to 8d to seek past palette --- "FXPL" 8d+userdata+palettesize postpallen FXPL+4,5,6,7 32 (64?) bit index to "ITRS" (8d+pallettesize+postpallen+8) --- "ITRS" 8d+pallettesize+postpallen+8 itrlen ITRS+4,5,6,7 length of iteration data aliasing ITRS+40 1byte antialiasing 02,03,04 aawidth ITRS+8c,8d,8e,8f aaheight ITRS+8e,90,91,92 maxiter2 ITRS+94,95,06,97
I had made different renders at low resolution with differing anti-aliasing settings. On quick inspection just now without anti-aliasing the format is very different and doesnt conform to the above. Hope this helps.
|
|
|
Logged
|
|
|
|
Kalles Fraktaler
|
|
« Reply #7 on: October 10, 2013, 07:09:01 AM » |
|
You may use the KFB files my program creates. Here is code how to read them: // The first 3 bytes contain "KFB" - just to make sure that I don't read garbage and try // to allocate unreasonable amount of data in the next steps char szId[3]; ReadFile(hFile,szId,3,&dw,NULL); if(strncmp(szId,"KFB",3)){ CloseHandle(hFile); return NULL; } // Next two integers are width and height int nWidth, nHeight; ReadFile(hFile,&nWidth,sizeof(int),&dw,NULL); ReadFile(hFile,&nHeight,sizeof(int),&dw,NULL); // Allocate and read integers int **ppBits = new int*[nWidth]; int x; for(x=0;x<nWidth;x++){ ppBits[x] = new int[nHeight]; ReadFile(hFile,ppBits[x],sizeof(int)*nHeight,&dw,NULL); } // Iteration divide value int nColorDiv; ReadFile(hFile,&nColorDiv,sizeof(int),&dw,NULL); // Number of key colors ReadFile(hFile,&nParts,sizeof(int),&dw,NULL); // Colors (COLOR14 is just 3 integers, R, G and B struct COLOR14 {int r, g, b; }; ReadFile(hFile,cKeys,sizeof(COLOR14)*nParts,&dw,NULL); // Maximum iterations int nMaxIter; ReadFile(hFile,&nMaxIter,sizeof(int),&dw,NULL);
|
|
|
Logged
|
|
|
|
panzerboy
Fractal Lover
Posts: 242
|
|
« Reply #8 on: October 10, 2013, 10:33:24 AM » |
|
I must confess to already having a peek at the kfb files. The palette table at the end is obviously 8bit triplets of RGB values so struct COLOR14 {uint8 r, g, b; }; not as you have stated. struct COLOR14 {int r, g, b; };
|
|
|
Logged
|
|
|
|
Kalles Fraktaler
|
|
« Reply #9 on: October 10, 2013, 03:33:45 PM » |
|
I must confess to already having a peek at the kfb files. The palette table at the end is obviously 8bit triplets of RGB values so struct COLOR14 {uint8 r, g, b; }; not as you have stated. struct COLOR14 {int r, g, b; }; Yes, you are right, sorry. And they are also aligned so that the size of the struct is 4 bytes
|
|
|
Logged
|
|
|
|
panzerboy
Fractal Lover
Posts: 242
|
|
« Reply #10 on: October 12, 2013, 04:44:40 AM » |
|
Karl,
Is the 'Zoom size' parameter stored in the kfb file ? I have a largeish zoom to e78 and in about 10 files there is noticeably absent details. I corrected this by working backwards an setting the zoom location to each point and then manually saving the jpg and kfb map. I saved to different names then used rename to proserve the originals as 'old' and then renamed the new files to be the same as the original. But rtendering the video shows the rectangles within rectangles look of a video genreated with zoom out of 2 when the source frames were rendered with zoom size 4. This happens when the movie maker hits the re-rendered frames, the first of which is about e15. Up till then the video was rendering fine. If its a matter of hacking the zoom size parameter in the KFB then I won't have to redo the 10 frames again.
|
|
|
Logged
|
|
|
|
Kalles Fraktaler
|
|
« Reply #11 on: October 12, 2013, 09:22:04 AM » |
|
No there is no info about the location in the KFB file, except the zoom level with two decimals in the file name.
When I correct a frame with blobs I do the following - I open the final location (you have stored that right?) It is not necessary to render it completely, so stop it with escape. - I calculate the exact zoom size. If frame with number 100 is to be replaced, i.e. file name is like 00100_1e057, the exact zoom is calculated by dividing the final zoom with 2^99 (if 2 is the selected zoom size) - I use this value in the set location dialog. - I then save and replace the KFB and jpg files. The movie maker search for all jpg/KFB files in the folder so it is best storing the incorrect ones somewhere else if you don't want to delete them.
I have also tried to use the 2 decimal zoom level value from the filename and it did not give any visible rectangles, at least for lower resolutions.
|
|
|
Logged
|
|
|
|
panzerboy
Fractal Lover
Posts: 242
|
|
« Reply #12 on: October 12, 2013, 12:31:24 PM » |
|
Sounds like the only thing I'm doing different is keeping the old .kfbs and .jpgs in the directory. I'll move them aside and see it that fixes things.
Thanks Karl.
|
|
|
Logged
|
|
|
|
|