POV-Ray : Newsgroups : povray.binaries.images : Saving PovRay objects as geometry : Re: Saving PovRay objects as geometry Server Time
21 May 2024 01:59:21 EDT (-0400)
  Re: Saving PovRay objects as geometry  
From: H  Karsten
Date: 4 Nov 2011 23:00:00
Message: <web.4eb4a66fdc71d3eca3bfeb720@news.povray.org>
OK, here a testversion not verry well tested jet and still slow.

- Download REBOL/Core 2.7 for Server Applications at
http://www.rebol.com/download.html
- rename it rebol.exe
- put it somewhere, the path-variable is pointing on, like c:\windows or
c:\windows\system32

- let run "example.pov" -> "geometry.qvx" should be generated (check for
permissions to let write files from PovRay)
- put "qvx2raw.r" and "qvx2raw.bat" into the same folder you run the example in
before.
- run "qvx2raw.bat" -> "geometry.raw" should be generated

It has being tested with:
PovRay 3.7
PovRay 3.6
PovRay 3.5
PovMan 1.1
MLPov 0.83
MegaPov 1.2.1
MCPov 0.0.5
DFjsPov (POV35dfjs.ZIP)
SlimePov

Note: the app is compressed. change "do decompress app" to "write/lines
%"source.r" decompress app" to save the source.

Best rgds,
holger

example.pov:
//#############################################################################
// Examplefile 4
// Pov2Raw
// Use:
// 1. #include "Pov2Qvx.inc" (only once)
// Pov2Mesh(object to trace,resolution,"file to save.qvx",true or false (want to
see the hits in the rendering))

camera {
  location  <0,1,-1.5>*7
  look_at   <0,0,0>
  rotate <0,-53,0>
  angle 40
}

light_source {
  <-2,4,-2>*10
  color rgb 1
 rotate <0,-53,0>
}

#declare In=
julia_fractal {
        <.745,0,.9113,.005>
        max_iteration 6
        precision 10000
        //hypercomplex
      texture {  pigment { color rgb <.9,.5,.6> }
     finish { phong .9 phong_size 20 }
 }
        //rotate <135,-30,0>
}

#include "Pov2Qvx.inc"
Pov2Mesh(In,15,concat("geometry.qvx"),true)
//object{In pigment{color rgbt <1,1,1,0.005>}}

Pov2Qvx.inc:
//#############################################################################

/*
This has being tested with:

PovRay 3.7
PovRay 3.6
PovRay 3.5
PovMan 1.1
MLPov 0.83
MegaPov 1.2.1
MCPov 0.0.5
DFjsPov (POV35dfjs.ZIP)
SlimePov
*/

#macro Rstr(V,L,P)
    concat("[", vstr(3, V, " ", L,P), "]")
#end
         // This is just the main loop
#macro  Pov2Mesh(Obj,Res,FileNameToSave,Show)
#if     (Res<4)#local Res=4;#end
#ifdef  (Pov2mesh_slice)#undef Pov2mesh_slice#end#local
Pov2mesh_slice=array[Res+2][Res+2];
#ifdef  (Pov2mesh_row)  #undef Pov2mesh_row  #end#local Pov2mesh_row
=array[Res+2];
#ifdef  (Pov2mesh_cube) #undef Pov2mesh_cube #end#local Pov2mesh_cube=0;
#local  Mn=min_extent(Obj);
#local  Mx=max_extent(Obj);
#local  Xstp=(Mx.x-Mn.x)/(Res-1);
#local  Ystp=(Mx.y-Mn.y)/(Res-1);
#local  Zstp=(Mx.z-Mn.z)/(Res-1);

#local  Xstp=int((Mx.x-Mn.x)/(Xstp)) / int(int((Mx.x-Mn.x)/(Xstp)) / Xstp);
#local  Ystp=int((Mx.y-Mn.y)/(Ystp)) / int(int((Mx.y-Mn.y)/(Ystp)) / Ystp);
#local  Zstp=int((Mx.z-Mn.z)/(Zstp)) / int(int((Mx.z-Mn.z)/(Zstp)) / Zstp);

#local  Pold=0;
#fopen  rawFile FileNameToSave write
#write  (rawFile,Rstr(Mn,0,-1),"\n")
#write  (rawFile,Rstr(Mx,0,-1),"\n")
#write  (rawFile,Rstr(<Xstp,Ystp,Zstp>,0,-1),"\n")
#local  Wr=false;
#local  Xr=Mn.x;//-Xstp;
#local  Xgrid=0;
#while  (Xr<=Mx.x)//+Xstp*10)
//#debug concat("###### Xr:  ",str(Xr,0,-1),"\n")
#local  Yr=Mn.y;//-Ystp;
#local  Ygrid=0;
#while  (Yr<=Mx.y)//+Ystp*10)
#local  Zgrid=0;
#local  SPOld=<Xr,Yr,Mn.z-Zstp>;
#local  Norm=<0,0,1>;
#while  (vlength(Norm)!=0)
#local  Norm=<0,0,0>;
#local  SP=trace(Obj,SPOld,z,Norm);
#if     (vlength(Norm)!=0)#write (rawFile,Rstr(SP,0,-1),"\n")#local Wr=true;
#if     (Show)
sphere  {0,.5 scale <Xstp,Ystp,Zstp> translate SP pigment{color rgb <0,1,0>}}
#end
#end
#local  SPOld=SP;
#end
//#debug concat("###### Yr:  ",str(Yr,0,-1),"\n")
#local  Yr=Yr+Ystp;
#local  Ygrid=Ygrid+1;#end
#local  Percent=int(100-((Mx.x-Xr)/(Mx.x-Mn.x)*100));
#if     (Percent > Pold)#debug concat("Pov2qvx is working...
",str(Percent,-2,0),"%\n")#end
#local  Xr=Xr+Xstp;
#local  Xgrid=Xgrid+1;
#local  Pold=Percent;#end
#fclose rawFile
#end

qvx2raw.r:
;##############################################################################
REBOL [
Title: "Qvx to raw"
File: %qvx2raw.r
Author: "Holger Karsten, BCN Niue Island"
Date: oct/nov 2011
Purpose: {
Converter for the .qvx file that is prodoced by the PovRay-file
PovMesh1.inc
All .qvx files of the currend directory are taken and being
convertet into a .raw file.
The combination of PovMesh & qvx2raw are designed to convert any
geometry in PovRay into a mesh-file.
Category: [3D PovRay converter tool Polygon rendering geometry]
}
]

app: #{
789CAD1ADB52DC46F6BDBFA23355D91AD60B4CB7EE54922D623BB66BB331EB38
9441A5073108D07A90264260F0D6FEFB9EABA41970E287F583A53E7DEE7D6E2D
E6DDCB1FDFFE6C73F3BEEE57D5819DFDEBEEDEF6ADEDCA4F33F3538DA06F7FBF
BBF7B0DEEBCCE16D7FD57680F5BA5D5D569DFD47D9DDF455F337FBE3F35FEC2F
F56D65DFDCACCAE67C665E943D90B6CB7EBF69EFAC5F38678E6EBB757B03D0FF
98E76D7357753D70B8683BDB5F55760F84D80B9007ABB2B7F58D5D77ED79BBAC
CEEDD903611CB577EFCA875DC431F0FECFEAE6CAEDD5CDD21CAE5623F98D6D2F
087D79DB7555736ECFEBAE5AF66DF760CB0E98971FABC68286F6ACAA9B4BB314
454062035697760F0C25467BE63D7269AFCFEAA6ECEBB641C622D7FEC58A4F88
E97975535F36A02970108620E2C15C56ED75D583E4BA11ED55CA3530D96529CF
C15197A0DE81CD83178AB61CFCD3B7ED0AA0AB874BD0000DAA3AD0DB2AEBC2FC
D714C620F2AABEE90FF27CB117D9857545EEE0018B42200B7899421CE3B82984
70146209467CA62F0BDD5A1420F87D57BF2FCF304A720308990D11CF5B07681E
97F0060F8FABC03AE282D061B5A017101A104D40BB04CA080ED4450E5C8080D4
45C20C1F0E59BA0551E23E2D7197A19E0503DC2039E9E4F1490AF29A45303747
52905D28C48C8E4A3127A7C8451ED914D58A10175E431BA9D580009BB8452B44
F4843178403050AB88769C8D1EBB83ED12660A42170149406429F12FF24CD9B0
873C2DC9111112906AC8CD3337F596C9058FB41C2C0E588E2FD469A1F8214572
F1316D109127ED894F246E61DD375C885861A1020769B20FAAC06B2C8AC6B8AF
7114936B623CEB8C16181C31854F3CF8538943A2136044E0228F791993339073
20EE8C29CC62E287E718E1818AFCC145126F1223CAD38992A899C65E20AB1850
0345CF08DB0D3EF49C0E31FB8ADE58E58C77874864FE31FB31DE74A3C9D911F1
564C52682038D5984587909090A0E4513A200A49649CA213713FE485F020A294
750AC802098CD8B2E39C3034792671CA960B553CF17230E59F2A6B9231C4AC88
E3D8E638A72067C7B2F7C83D9E4845734D764F60324843291B75219F3B392582
B15F1712FD14C2E25D2E89FC22EE6623C8C74040F48A1233073EE2840383E313
D7AC0A0709ADA51C4A911881093929E102810B4F4B8A66F20DC28855426E49D0
0CE1C17E67F400D18321D65821AFB11BB09509FB88B5106455859FBA3529071C
5F096327124F9EE3894356D81098C235919A9D900F13529E1120364D2E26255A
03BCD4795161A3BC7275238AB1E40BA2D447368C35D77AABE531117FC6D62B5F
4F5E8B073773FAA714CD1113F2A1B3CEE4F2945397B972875AA8110119A25D8A
2BE570041393B4226B68BBB147645B8761B8136C5465AA9B5241F5CC26C55F8F
45FD1F736EF0D2CA21690126665CC924B4623D294F5ED126B5755291E6A9E316
AF9536218BA9AAB1B588EE8642EE38CF9C4442C4053D949CC67344206949674C
F4DAC2608B7BB856F70597F285ECE58ED6111F148F0FD914A44AAA6AC8448237
188B352344E2D85093C60F3A8B7AE893C88A4F1D95E2A110112B2F591B718D4B
D81649871035A49295E99948CA79121149EBE55340D18E8D4C4812C133D02165
6BD2618459C870C51305356C37189DF226BF4A3BD75A9AD9714B363C770B4E1C
3E1FCF32F0A0302C38E4F9303C932E585EC81A2C3065B86822EB843B6F4A8783
E8C166AD1AAD6009D83D64D2E1FA8231271AB251A8851F9A59A656098EB6E5CD
1E21F58D9C40E7B090D84BD50EF13B1E574273E282A913EE5EA341E150F712F4
5FCA4987E79290E0500B6FCA8C3493538E51E90221734F254AD9E10818861BE6
A3C0400743768382F93910701BD2E119750A28960269C1B09D4A5407A87C40CB
808BE630BB27E4B94CC333632AD293A8758A08A502A78499EA2493F2804DDD86
19A7D2575575C7EA2412AC8E44C8C4CDA59D328A92912C0CA50746ECC384F723
294E9277B24CB85E8B83433A9B44B13D65BE7393A13CD48E9FF083644413095E
AE28EA7CAE6A0B9D2E026D0C2C8D6828D70329A60181E80E332ECCF40AA360E4
9249A78BA82C04BCC38113CA99B05E8998E1C64146D28D66CC84F8328958196A
6D5E686916A739AAB3918E688974888C5870B793508D65AE89AC1B11694FB075
A8E6E948867A8E6FC59798D5197E2266C822258B86911EFD170ED78048467899
3355BB544239A1CD48A761BD5868E0A3AE29C796E2EB1083FD09C32520F48C52
8B1D9E498BCD36CDE2C84F341BFC981FDC795362325E55223EAA48A7CB507AA3
D3D1C5A91386D4187C91512D4F9857325EB4329941128D631ED313112B97E78C
471B2F27184F4F2324A2982F58149BE3FD6A2A060913E1178E2923A36AA2BDDB
F1A49C3175CC557E725C783C5B92C70A16CB4D472E2301B149249BF4CE2099CE
311FF05D465A95C8236CA2CB789BAB1A0DDEA1340312998DBA735FD84EA9E1F6
935070300DADB87DB24B64804BC9E6714DA1197359A6F4E135EFB067A5868EE8
A489DC198893D7186762BE9FEAB714855217D0DB60CCF52AD51A1348BF48C9A3
8CAA483C359150EACDB1B6D1982232E65AC6911850380B46BC75D3510A3AC640
3E9EE86705492626241E011FC520C549AAE81C12CBE70B29E71C9DA9B01513D3
822245C6E24C5C98510039067B0D3D270DC16D7CB199905192F1A58EE7C28183
14A888D29C3E7804725DCBB400B112DCF5A26144089543C0E7CDA3390FAE7A2B
D2C3207A66154B4313DEE1702C9C2ACC95BA8B5C33F832C873AFD3EF5E815E49
43A922B14C4D582E36C8C69B5F84C722B658BDBF7BEE5DA43CC7C3B83F5C99C2
516B6E26788691DEF3B8F16CB69574988CC66D3FA686971EE8980F8D565EBFD8
E8089E8AB3F9C846C17A6951F7726592EC88A682FDE478F4D6E295AF7660B70D
D46E177030B0019270DC54588CA488D3DB53A4781CEB34ECA261E950FF02C592
AF11DC31C4339C7FFA11893DC45F40C22D987E5EA28137B23C8A458C96D10CCD
7A8D3993873AC74FEFE64ED34526381DD5E4389CF6022703951C9DD3AF7C8FF9
0E3739BE491A4A066950CC960B99547C3BF9D8C5FDDCB1DF90C73696DEAE9CCC
514EAB4CC6BEC974B42FB88E17F809BD6B6F9BF3037B71DB2C6D7E57E47DBB5B
377D857FE598CF37167776D74E00773BF6AFD6EFECD86776BE01DE51AE7DCB7C
F3E372755BD917F55D7D5E75452E2F404E6876CEFBFB8A810C8EDA9BF7D5F55A
15BBB70F85DDD4ED01D471A8C3FCE4D7FA73056A2C48997B7CC3BF0DF8A552D7
CDFAB6077AB30E0FA626CC690304BB384912EFE21D4B90037E6CDA3B5F87206C
C034EBE0695E711405B1B5F68F7905C06BC0346BFF342F1FE1FE9FF1F278108A
69D64ED00C20F5B7EB5565FFDDD60D92DCF4F44794B5B3F96C6F368578BB0508
B6012145CBD2DF3D726A55F757A007ABF6BD6DDAA6B239FE0FD1CD96EC6F78EE
990007170C10316458BB1D12FAE1398449AF72295830829F69F848FCECDA0F37
7DD9F53BE0B80F97E519109F7C2DE5C94079C294A75F4B793A509E32A5299FD4
774242517B8FD8C0EFC3AF485F58533EA9EC36D983909D0C644F6ABA4DF659C8
4E95CCBCAAFA9FBAF67A2BC9ECFBEB75311CE9FCDEFE0059457F37847CC3F71C
33B3C6BF0BBE699816D63DBC40DE3D189239B25DD7CB8FC8D16ED26014D90D54
5348C0148362AFBAFAFCB162C074A2B8950DD5776DBFFB41E2CFFC7E77BF3F5F
C3798C9C4F376A9D784A2A15EB634F5F95678079B85ABDAEFB9B37CDCF75534D
6B506EF0EF9AF9518BC9389B1566B9AACACEE2DA30B0ECBA1230A002BD28FB72
34FCB1E298C0A0FB14ED2D72D8C603B6D568E37CBEC957326EC7B6B0B7C54BF7
76486158F908BAA7A1BF3DDB2D36DBA47ECCECAAEBDAEEEF962C2FD76BFCEB32
F1FBBCC4C8B3E4E97E671F9ACD7497DC9E9BFAE2EBE82138DDD33CE0EC0A72AE
194F663844678FA19D99C3D783E771C635CBABB2B9ACECE1EB7D67370E139A8D
A356012F9E5E26B8FE8F71DD14377812D73DC937FC635CE07BF81A8D7B7E552D
3F1E41B19674CE1B25B43FAEDAE5C762CCBE03EBCCBBEAE67605A80B83E1A5A8
FB73C2DDD99F2BEE8E797E4491F5450C56428EBB697B3B9F04566E3E5DE10F14
F2390B848D05875B03258158EF80667FA60304C2C0D4E6675D557E2CBE523120
4559DF030329468DFD4E24DB5CDDE08A8977260C3CC44F3E715621EFF61E6C70
86FF9A4F6A704C95438A38BBAA9ACBFEEAEFB684380A7203584788E8CC4BE8B2
08E5C885D37EE9A70050FA65300578B2E2A51B1CA0ACA050E086FFD246F0850D
5EC1A6CB4919EAF187F7D40CEC5C7F18B13F7F095985D1362FF73D34D49D7C66
67F6F0E1493CAF7838D611DEE727F102C50B00AF20D3BF28DE7FA578FF95E2FD
63F1C11F880FBE527CF095E28347E2A55EC179E0CF865893973861010738567A
04F878840AD315D40888418C49EA50F8339D7635B4A83734628D61B730478B03
4B504A03079D3D35476E031623D09A233F85D264658E82292C60A0329FCF8F16
98D5478E93FBC8D30A8C14145410DE7E6EDBB5CEF5587DED71608F438B1641B3
35621C7647AACA5AC008D7BC3A7BC0DF47411F1A524CBAC067F48CCBEDB40A4D
1BC7DBD5B910D303BC224BF1198341C75CE0902628E25DFB893FA3502BEA6005
2903F5870BC600F2028A27B080617E020A1914004CC4CCE763D5067B0E5FA344
1CB9CE7AF2A3AA550E0DCA4F1A14D615FD2DD1FE9C70B9DCD12B4F5FF9880CCE
761A45B4F2D3552F85CC96D8313F75755FEDCB36841AFDC88CE24E8E4866175D
C1E9CA8FBBC6F023F49CAF00DF148A3A007020EBD0EED9AA2DCF013443167495
39C3426EA1C88FB2999D52ACBB7659DDDC20D1A70E439B26532AAD38A341A894
67E068F3819E3423C01B64B339D9827873BA05012AE146307AC73A604E9E0003
F9135060417A100CDE48F0160428B72040F5A2BEB838B0488C1712E2664E1878
C24056C29C32F09481AC03E80D57D903BD641033BCCD8055DC544E36F64F64FF
64D87FF30B4FDED79014B6BE2E2FAB6FD0FFEBB2EEB66F81240ACAD4FDF49A47
FC0BF3F6B7FF0B1B38E333A9881334DEB446666809439AA0DF62EDDB7586EA6E
D56134400E57E5F20A667B7033E5B06C4272A0D9F966D3E7A9994BCA1A8EFC41
5F3D5F4E0EEC9D5F2A0BAD352817925B19997CDD82DDEC847192E00B836CB2A3
1F6DB20503A362B444B57E46230725E79019DA10C01958B2EEED02CE9E1C46D7
37A76936F1E42E60CDECAFAB1A9208A6948B9E491F90F46483F46503F5F34D83
F3FD70B7C0CB15DD2DC40C4602359EC6124F0C579009CB8DEBC794CB383E1E43
D781E21F6225A5C5F6054794408CED2D965C9863E871F7E6187A1A5C32A3036C
38BBD078B4FAE15D819C33A329748697350CB5073B833E8CBD07DBF03177E3E3
801F21B4647B459709584593765C689FB3D30EA785F213C52535854F1D779389
1A23174B750DFB3A47389BA955F737BEF7C27DB70DDFF463C9B5D3EA0AC674D5
7A552EB17ADA19FEDA77861F66241E1A43632B598EFBF4E365F4C0004182691A
CEDE09BB198AC29485FF40ED426B3F52BDE55EAF99D77319FF766FDF52FE5DD4
D850441BB8101F4C12BF17613D9B054FFCB52CFDFB1F793D2C22712D0000
}
do decompress app

qvx2raw.bat:
rem ###########################################################################
rebol -s qvx2raw.r


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.