landscape_gene={} function landscape_gene:init() self.aaa=1 self.bbb=1 self.ccc=1 self.ddd=1 self.eee=1 self.fff=1 self.ggg=1 self.hhh=1 self.iii=1 self.jjj=1 self.kkk=1 self.lll=1 self.mmm=1 self.nnn=1 self.ooo=1 self.ppp=1 -- 2 list box à 3 posibilités l autre à 5 mais + si besoin Attention cela marche par ordre alphabétique. self.lilistboxx=1 --list box A pour les types de Lands self.liboxx=1 --list box B --6 checkbox self.blibli=1--pour oui 1 pour non nil self.bloblo=nil--pour non self.bleble=nil--pour oui self.blublu=nil--pour non self.blabla=nil--pour non self.blrblr=nil--pour non -- 4 boutons ne marchent qu'en va et vient par grpoe de 2 self.bouta=nil--pour non va et vient self.boutb=1--pour oui self.boutc=1--pour oui self.boutd=nil--pour non --2 textEdit self.textA="" self.textB="" --ici 6 possibilités de textures mais + si besoin self.texture="" self.t222=""-- self.t333=""-- self.t444=""-- self.t555=""-- self.t666=""-- end function landscape_gene:destroy() end function landscape_gene:load(stream) stream:readByte() self.aaa=stream:readDouble() self.bbb=stream:readDouble() self.ccc=stream:readDouble() self.ddd=stream:readDouble() self.eee=stream:readDouble() self.fff=stream:readDouble() self.ggg=stream:readDouble() self.hhh=stream:readDouble() self.iii=stream:readDouble() self.jjj=stream:readDouble() self.kkk=stream:readDouble() self.lll=stream:readDouble() self.mmm=stream:readDouble() self.nnn=stream:readDouble() self.ooo=stream:readDouble() self.ppp=stream:readDouble() --2 list box self.lilistboxx=stream:readDouble() self.liboxx=stream:readDouble() --6 checkbox self.blibli=stream:readBoolean() self.bloblo=stream:readBoolean() self.bleble=stream:readBoolean() self.blublu=stream:readBoolean() self.blabla=stream:readBoolean() self.blrblr=stream:readBoolean() --4 boutons self.bouta=stream:readBoolean() self.boutb=stream:readBoolean() self.boutc=stream:readBoolean() self.boutd=stream:readBoolean() --2 textEdit self.textA=stream:readString() self.textB=stream:readString() --les textures self.texture=stream:readString() self.t222=stream:readString() self.t333=stream:readString() self.t444=stream:readString() self.t555=stream:readString() self.t666=stream:readString() end function landscape_gene:save(stream) stream:writeByte(2) stream:writeDouble(self.aaa) stream:writeDouble(self.bbb) stream:writeDouble(self.ccc) stream:writeDouble(self.ddd) stream:writeDouble(self.eee) stream:writeDouble(self.fff) stream:writeDouble(self.ggg) stream:writeDouble(self.hhh) stream:writeDouble(self.iii) stream:writeDouble(self.jjj) stream:writeDouble(self.kkk) stream:writeDouble(self.lll) stream:writeDouble(self.mmm) stream:writeDouble(self.nnn) stream:writeDouble(self.ooo) stream:writeDouble(self.ppp) -- 2 list box stream:writeDouble(self.lilistboxx) stream:writeDouble(self.liboxx) --6 checkbox stream:writeBoolean(self.blibli) stream:writeBoolean(self.bloblo) stream:writeBoolean(self.bleble) stream:writeBoolean(self.blublu) stream:writeBoolean(self.blabla) stream:writeBoolean(self.blrblr) --4 boutons stream:writeBoolean(self.bouta) stream:writeBoolean(self.boutb) stream:writeBoolean(self.boutc) stream:writeBoolean(self.boutd) --2 textEdit stream:writeString(self.textA) stream:writeString(self.textB) --les textures stream:writeString(self.texture) stream:writeString(self.t222) stream:writeString(self.t333) stream:writeString(self.t444) stream:writeString(self.t555) stream:writeString(self.t666) end function landscape_gene:getProperties() return "LandScape_Gene", "A11BD3A1EC12DDCC", "3311333333333333".. "3331111333333333".. "3333111113333333".. "3333331111133333".. "3333333111113333".. "3333333111111333".. "3333333111111333".. "3333333311111333".. "3333333311111333".. "3333333311111333".. "3333333111111333".. "3333331111113333".. "3333311111133333".. "3333111113333333".. "3331113333333333".. "3311333333333333" end function landscape_gene:getDialog(dialog) dialog:addSeparator("LandScape_Gene:") self.helpID=dialog:addButton("Help") dialog:addSeparator(" Typos :") self.lilistboxxID = dialog:addListBox ({"1_Original", "2_Broken_up_A", "3_Mountain/Valley", "4Hilly_Land ", "5Karstic_Lans", "6Extreme_Karstic", "7Mountainous_A", "8Deep_Valeys", "9Mountainous_B", "10Broken_up_B", "11Crackled", "12Deep_Valleys_B"}, self.lilistboxx) dialog:addSeparator("Les boutons:") self.boutbID=dialog:addRadioButton("Height_Field",self.boutb) self.boutaID=dialog:addRadioButton("IsoSurface",self.bouta) dialog:addSeparator(" 2 autres boutons:") self.boutcID=dialog:addRadioButton("rien",self.boutc) self.boutdID=dialog:addRadioButton("rien",self.boutd) dialog:addSeparator("Les edits boxes:") self.aaaID=dialog:addEditBox("aaa:",self.aaa,-5,10,2) self.bbbID=dialog:addEditBox("bbb:",self.bbb,-5,10,2) self.cccID=dialog:addEditBox("ccc:",self.ccc,-5,10,2) self.dddID=dialog:addEditBox("ddd:",self.ddd,-5,10,2) self.eeeID=dialog:addEditBox("eee:",self.eee,-5,10,2) self.fffID=dialog:addEditBox("fff:",self.fff,-5,10,2) self.gggID=dialog:addEditBox("ggg:",self.ggg,-5,10,2) self.hhhID=dialog:addEditBox("hhh:",self.hhh,-5,10,2) self.iiiID=dialog:addEditBox("iii:",self.iii,-5,10,2) self.jjjID=dialog:addEditBox("jjj:",self.jjj,-5,10,2) self.kkkID=dialog:addEditBox("kkk:",self.kkk,-5,10,2) self.lllID=dialog:addEditBox("lll:",self.lll,-5,10,2) self.mmmID=dialog:addEditBox("mmm:",self.mmm,-5,10,2) self.nnnID=dialog:addEditBox("nnn:",self.nnn,-5,10,2) self.oooID=dialog:addEditBox("ooo:",self.ooo,-5,10,2) self.pppID=dialog:addEditBox("ppp:",self.ppp,-5,10,2) dialog:addSeparator(" La list-boxB :") self.liboxxID = dialog:addListBox ({"1_BOXrouge", "2_CONErouge", "3_dfdffd", "4_fddffds", "5_TORUSrouge"}, self.liboxx) --ajout 6 Checkbox dialog:addSeparator(" Les CheckBox:") self.blibliID=dialog:addCheckBox("blibli" ,self.blibli) self.blobloID=dialog:addCheckBox("bloblo" ,self.bloblo) self.blebleID=dialog:addCheckBox("bleble" ,self.bleble) self.blubluID=dialog:addCheckBox("blublu" ,self.blublu) self.blablaID=dialog:addCheckBox("blabla" ,self.blabla) self.blrblrID=dialog:addCheckBox("blrblr" ,self.blrblr) dialog:addSeparator(" Les TextEdit:") self.textAID=dialog:addTextEdit("A remplir",self.textA) self.textBID=dialog:addTextEdit(nil,self.textB) dialog:addSeparator("") --ajout de textures dialog:addSeparator("Les Textures :") self.textureID=dialog:addTexture(self.texture) dialog:addSeparator("Texture2:") self.t222ID=dialog:addTexture(self.t222) dialog:addSeparator("Texture3:") self.t333ID=dialog:addTexture(self.t333) dialog:addSeparator("Texture4:") self.t444ID=dialog:addTexture(self.t444) dialog:addSeparator("Texture5:") self.t555ID=dialog:addTexture(self.t555) dialog:addSeparator("Texture6:") self.t666ID=dialog:addTexture(self.t666) dialog:addSeparator("") end function landscape_gene:valueChanged(index,value) -- HELP if index==self.helpID then messageBox("About LandScape_Gene ", --titre "Bla bla bla\n\n".. --saut 2 fois à la ligne "Caballeros y Caballeras. \n".. "A great part of these Plug-ins came from the Net. I just rewrite .inc files or macros in Lua format, through Fullmoon \n".. "create by Mr LEIRADELLA. http://www.geocities.com/andre_leiradella/ And Email:leiradella@bigfoot.com \n".. "To use with MORAY3.x. \n".. "From les Iles Caiman. \n".. "C'est la vie.\n".. "Friendly. \n".. "Sylvain. Email:sylvain@potar-hurlant.com \n".. "Ps: I build this plugin for fun. It not a professional work. Don't be cruel and have fun. \n".. "Persistence of Vision Ray Tracer Scene Description File \n\n".. " File name : LandscapeGenerator.pov \n".. " Version : 3.5 \n".. " Description : Makes isosurface landscapes \n".. " uses heightfields to test same landscape (faster!) \n".. " obviously, there are thousands of combinations possible! \n".. " here are just a few to get you started. \n".. " enjoy! \n".. " Date : May 2004 \n".. " Author : Mike Williams \n".. " Compiled : Thomas A. M. de Groot \n".. " \n".. " \n\n".. " " ) return end if index==self.aaaID then self.aaa=value self:redraw() end if index==self.bbbID then self.bbb=value self:redraw() end if index==self.cccID then self.ccc=value self:redraw() end if index==self.dddID then self.ddd=value self:redraw() end if index==self.eeeID then self.eee=value self:redraw() end if index==self.fffID then self.fff=value self:redraw() end if index==self.gggID then self.ggg=value self:redraw() end if index==self.hhhID then self.hhh=value self:redraw() end if index==self.iiiID then self.iii=value self:redraw() end if index==self.jjjID then self.jjj=value self:redraw() end if index==self.kkkID then self.kkk=value self:redraw() end if index==self.lllID then self.lll=value self:redraw() end if index==self.mmmID then self.mmm=value self:redraw() end if index==self.nnnID then self.nnn=value self:redraw() end if index==self.oooID then self.ooo=value self:redraw() end if index==self.pppID then self.ppp=value self:redraw() end --ListBox if index==self.lilistboxxID then self.lilistboxx=value self:redraw() end if index==self.liboxxID then self.liboxx=value self:redraw() end --6 checkbox if index==self.blibliID then self.blibli=value self:redraw() end if index==self.blobloID then self.bloblo=value self:redraw() end if index==self.blebleID then self.bleble=value self:redraw() end if index==self.blablaID then self.blabla=value self:redraw() end if index==self.blubluID then self.blublu=value self:redraw() end if index==self.blrblrID then self.blrblr=value self:redraw() end --4 boutons va et vient par grpe de 2 if index==self.boutaID then self.bouta=value self.boutb=nil self:redraw() end if index==self.boutbID then self.bouta=nil self.boutb=value self:redraw() end if index==self.boutcID then self.boutc=value self.boutd=nil self:redraw() end if index==self.boutdID then self.boutc=nil self.boutd=value self:redraw() end --2 TextEdit if index==self.textAID then self.textA=value scene:invalidate() self.redraw() elseif index==self.textBID then self.textB=value scene:invalidate() end --les textures if index==self.textureID then self.texture=value end if index==self.t222ID then self.t222=value end if index==self.t333ID then self.t333=value end if index==self.t444ID then self.t444=value end if index==self.t555ID then self.t555=value end if index==self.t666ID then self.t666=value end scene:invalidate() end function landscape_gene:getInside(x,y,z) return nil end function landscape_gene:wireframe(wire) local aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj,kkk,lll,mmm,nnn,ooo,ppp aaa=self.aaa bbb=self.bbb ccc=self.ccc ddd=self.ddd eee=self.eee fff=self.fff ggg=self.ggg hhh=self.hhh iii=self.iii jjj=self.jjj kkk=self.kkk lll=self.lll mmm=self.mmm nnn=self.nnn ooo=self.ooo ppp=self.ppp --lilistboxx=self.lilistboxx--list box -- 4 lignes wire:line(1.74,0,0.5*1,1.74,0,1.0*1) wire:line(-1.74,0,0.5*1,-1.74,0,1.0*1) wire:line(0,1.74,0.5*1,0,1.74,1.0*1) wire:line(0,-1.74,0.5*1,0,-1.74,1.0*1) --cercle face ,0 wire:circleY(0,0,3*1,0.6,0,180) wire:circleY(0,0,0,0.6,180,360) --cercle profil vers l'arriere wire:circleX(0,0,1.5*1,0.6,0,180) wire:circleX(0,0,0,0.6,180,360) --cercle a plat du ht vers bas wire:circleZ(0,0,1.5*1,0.6) --le plus ht wire:circleZ(0,0,1*1,0.6) wire:circleZ(0,0,0.5*1,0.6) wire:circleZ(0,0,0,0.6)--le plus bas wire:squareX(-0.5,-0.5,0.5,0.5,-0.5) wire:squareZ(-0.5,-0.5,0.5,0.5, 0.5) wire:squareY(-0.5,-0.5,0.5,0.5,-0.5) end function landscape_gene:toPOV(pov) local mmw,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj,kkk,lll,mmm,nnn,ooo,ppp,nnw,oow,soso,lilistboxx mmw='"' aaa=self.aaa bbb=self.bbb ccc=self.ccc ddd=self.ddd eee=self.eee fff=self.fff ggg=self.ggg hhh=self.hhh iii=self.iii jjj=self.jjj kkk=self.kkk lll=self.lll mmm=self.mmm nnn=self.nnn ooo=self.ooo ppp=self.ppp soso=1 nnw='!' oow='|' lilistboxx=self.lilistboxx--list box pov:write("// #include \"functions.inc\" exemple de include ") pov:write("union {// debut de l union de la totale ") pov:write(" // ") pov:write(" // ") pov:write(" //debut objet ") --///////////////////////////////////////////////////////////////////// --ici debut du fichier Pov pov:write(" ") pov:write("/**********************************************************************************/ ") pov:write("// Persistence of Vision Ray Tracer Scene Description File ") pov:write("// File name : LandscapeGenerator.pov ") pov:write("// Version : 3.5 ") pov:write("// Description : Makes isosurface landscapes ") pov:write("// uses heightfields to test same landscape (faster!) ") pov:write("// obviously, there are thousands of combinations possible! ") pov:write("// here are just a few to get you started. ") pov:write("// enjoy! ") pov:write("// Date : May 2004 ") pov:write("// Author : Mike Williams ") pov:write("// Compiled : Thomas A. M. de Groot ") pov:write(" ") pov:write("/**********************************************************************************/ ") pov:write(" ") pov:write("#include \"functions.inc\" ") pov:write(" ") pov:write("#declare Loc = 5; // location of the camera and primary scaling ") --pov:write("#declare Function = 2; // choose an example (0 - 12) ") if self.bouta==1 then--pour iso pov:write("#declare Iso = true; // true for isosurface; false for heightfield ") end if self.boutb==1 then --pour HF pov:write("#declare Iso = false; // true for isosurface; false for heightfield ") end pov:write("#declare Xscale = 10; // increase size of landscape (not scale!) for X ") pov:write("#declare Zscale = 10; // increase size of landscape (not scale!) for Z ") pov:write("// ---------------------------------------- ") pov:write(" ") pov:write("#declare G = ") pov:write("pigment { ") pov:write(" gradient y ") pov:write(" //slope {<0.0, 0.1, 0.0> , 0.0 , 1.0 ") pov:write(" // altitude <0.0, 0.9, 0.0> , 0.0 , 1.0 ") pov:write(" //} ") pov:write(" colour_map { ") pov:write(" [0.04 rgb <0.1,0.4,0.1>] ") pov:write(" [0.10 rgb <0.5,0.4,0.3>] ") pov:write(" [0.25 rgb 0.5] ") pov:write(" [0.65 rgb 1.0] ") pov:write(" } ") pov:write(" translate -0.05*y ") pov:write("} ") pov:write(" ") pov:write(" #undef P1 ") pov:write(" #undef P2 ") pov:write(" #undef P ") --pov:write("#switch (Function) ") pov:write(" ") if self.lilistboxx ==1 then --pov:write("#case (1) ") pov:write("//Original functions (Mike Williams): ") pov:write("#declare P1=function {pattern {leopard turbulence 0.3 scale 0.05}} ") pov:write("#declare P2=function {pattern {crackle turbulence 0.3 scale 0.7}} ") pov:write("#declare P=function {P1(x, 0, z)*0.3 + P2(x, 0, z)} ") --pov:write("#break ") pov:write(" ") end if self.lilistboxx ==2 then pov:write("// Interesting pattern combinations (Thomas de Groot): ") --pov:write("#case (2) ") pov:write("// a broken-up landscape: ") pov:write("#declare P1=function {pattern {cells warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.05}} ") pov:write("#declare P2=function {pattern {crackle warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.7}} ") pov:write("#declare P=function {P1(x, 0, z)*0.3 + P2(x, 0, z)*1} ") --pov:write("#break ") pov:write(" ") end if self.lilistboxx ==3 then --pov:write("#case (3) ") pov:write("// a mountain/valley landscape: ") pov:write("#declare P1=function {pattern {leopard warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.05}} ") pov:write("#declare P2=function {pattern {crackle warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.7}} ") pov:write("#declare P=function {P1(x, 0, z)*0.3 + P2(x, 0, z)*1} ") --pov:write("#break ") pov:write(" ") end if self.lilistboxx ==4 then --pov:write("#case (4) ") pov:write("// a hilly landscapes with 'tors': ") pov:write("#declare P1=function {pattern {dents warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.05}} ") pov:write("#declare P2=function {pattern {crackle warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.7}} ") pov:write("#declare P=function {P1(x, 0, z)*0.3 + P2(x, 0, z)*1} ") --pov:write("#break ") pov:write(" ") end if self.lilistboxx ==5 then --pov:write("#case (5) ") pov:write("// a karstic landscape: ") pov:write("#declare P1=function {pattern {agate warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.05}} ") pov:write("#declare P2=function {pattern {crackle warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.7}} ") pov:write("#declare P=function {P1(x, 0, z)*0.3 + P2(x, 0, z)*1} ") --pov:write("#break ") pov:write(" ") end if self.lilistboxx ==6 then --pov:write("#case (6) ") pov:write("// an extreme karstic landscape: ") pov:write("#declare P1=function {pattern {granite warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.05}} ") pov:write("#declare P2=function {pattern {crackle warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.7}} ") pov:write("#declare P=function {P1(x, 0, z)*0.3 + P2(x, 0, z)*1} ") --pov:write("#break ") pov:write(" ") end if self.lilistboxx ==7 then --pov:write("#case (7) ") pov:write("// a mountainous landscape: ") pov:write("#declare P1=function {pattern {bozo warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.05}} ") pov:write("#declare P2=function {pattern {crackle warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.7}} ") pov:write("#declare P=function {P1(x, 0, z)*0.3 + P2(x, 0, z)*1} ") --pov:write("#break ") pov:write(" ") end if self.lilistboxx ==8 then --pov:write("#case (8) ") pov:write("// hilly with deep valleys: ") pov:write("#declare P1=function {pattern {boxed warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.05}} ") pov:write("#declare P2=function {pattern {crackle warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.7}} ") pov:write("#declare P=function {P1(x, 0, z)*0.3 + P2(x, 0, z)*1} ") --pov:write("#break ") pov:write(" ") end if self.lilistboxx ==9 then --pov:write("#case (9) ") pov:write("// a mountainous landscape: ") pov:write("#declare P1=function {pattern {bumps warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.05}} ") pov:write("#declare P2=function {pattern {crackle warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.7}} ") pov:write("#declare P=function {P1(x, 0, z)*0.3 + P2(x, 0, z)*1} ") --pov:write("#break ") pov:write(" ") end if self.lilistboxx ==10 then --pov:write("#case (10) ") pov:write("// a broken-up landscape: ") pov:write("#declare P1=function {pattern {checker warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.05}} ") pov:write("#declare P2=function {pattern {crackle warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.7}} ") pov:write("#declare P=function {P1(x, 0, z)*0.3 * P2(x, 0, z)*1} ") --pov:write("#break ") pov:write(" ") end if self.lilistboxx ==11 then --pov:write("#case (11) ") pov:write("// a crackled landscape: ") pov:write("#declare P1=function {pattern {crackle warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.05}} ") pov:write("#declare P2=function {pattern {crackle warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.7}} ") pov:write("#declare P=function {P1(x, 0, z)*0.3 + P2(x, 0, z)*1} ") --pov:write("#break ") pov:write(" ") end if self.lilistboxx ==12 then --pov:write("#case (12) ") pov:write("// hilly with deep valleys: ") pov:write("#declare P1=function {pattern {cylindrical warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.05}} ") pov:write("#declare P2=function {pattern {crackle warp {turbulence <0.1, 0.9, 0.3> /*octaves 1 omega 0.5 lambda 0.5*/} scale 0.7}} ") pov:write("#declare P=function {P1(x, 0, z)*0.3 + P2(x, 0, z)*1} ") pov:write(" ") pov:write(" ") pov:write(" ") end --pov:write("#end // end of switch ") pov:write(" ") pov:write(" ") if self.bouta==1 then--pour iso pov:write("isosurface { ") pov:write(" function {y - P(x, 1, 1-z)} ") pov:write(" //open ") pov:write(" max_gradient 5 ") pov:write(" contained_by {box {<0.5-Xscale*0.5, -1, 0.5-Zscale*0.5>, <0.5+Xscale*0.5, 1, 0.5+Zscale*0.5>}} ") pov:write(" translate <-0.5, 0, -0.5> ") pov:write(" scale ") pov:texture(self.texture) --pov:write(" pigment {G} ") pov:write(" //translate -Loc/2*x ") pov:write("} ") pov:write(" ") end if self.boutb==1 then--pour HF pov:write("height_field{ ") pov:write("// function 300, 300 {P((x-0.5)*Xscale+0.5, 0, (y-0.5)*Zscale+0.5)}//ori ") pov:write(" function 300, 300 {P((x-0.5)*Xscale+0.5, 0, (y-0.5)*Zscale+0.5) ") pov:write(" ") pov:write("// water_level 0.1547 ") pov:write("// smooth ") pov:write("// scale <1,1,-1> ") pov:write(" } ") pov:write(" ") pov:write(" translate <-0.5, 0, -0.5> ") --pov:write(" scale //ori ") pov:write(" scale <5*Xscale, 1, 5*Zscale> ") pov:texture(self.texture) --pov:write(" pigment {G} ") pov:write(" //translate 5/2*x //Loc/2*x ") pov:write(" } ") pov:write(" ") end pov:write("rotate <-90,0,0> ") pov:write(" scale <1,1,-1> ") --////////////////////////////////////////////////////////////////////////: --debut 6 checkkbbox if self.blibli==1 then pov:write(" //checkbox 1") end if self.bloblo==1 then pov:write(" //checkbox 2 ") end if self.bleble==1 then pov:write(" //checkbox 3 ") end if self.blublu==1 then pov:write(" //checkbox 4 ") end if self.blabla==1 then pov:write(" //checkbox 5 ") end if self.blrblr==1 then pov:write(" //checkbox 6 ") end --fin checkkbbox --debut d exemple pour listbox à 3 choix. if self.lilistboxx ==1 then soso=1 do pov:write("//listboxA choix 1") end end if self.lilistboxx ==2 then soso=1 do pov:write("//listboxA choix 2 ") end end if self.lilistboxx ==3 then soso=1 do pov:write("//listboxA choix 3 ") end end --fin d exemple pour listbox a 3 choix. --debut d exemple pour listbox à 5 choix. if self.liboxx ==1 then pov:write("//listboxB choix 1") end if self.liboxx ==2 then pov:write("//listboxB choix 1") end if self.liboxx ==3 then pov:write("//listboxB choix 1") end if self.liboxx ==4 then pov:write("//listboxB choix 1") end if self.liboxx ==5 then pov:write("//listboxB choix 1") end --fin d exemple pour listbox a 5 choix. --ici debut addRadioButton methode a paufiner --les 2 text edit if self.textA ~= "" then pov:write(self.textA) end if self.textB ~= "" then pov:write(self.textB) end --fin TextEdit --les textures -- --pov:texture(self.t222) --pov:texture(self.t333) --pov:texture(self.t444) --pov:texture(self.t555) --pov:texture(self.t666) pov:write(" // ") --pov:write("box{-.001,.001 pigment {rgbt 1}") -- added so the code can be part of a CSG pov:transforms(self.xforms) pov:write("} //fin union général de l'objet ") end registerClass(landscape_gene,"landscape_gene")