glowc={} function glowc:init() self.col_red=1 -- self.col_green=1 -- self.col_blue=1-- self.main_intensity_=1-- self.FadeDistance_=3-- self.FadePower_=2-- self.scale__=1-- self.sample_mini=1-- self.sample_maxi=1-- self.intervals_=1-- self.confidence_=0.1-- self.method_=3-- self.turbu_x=0-- self.turbu_y=0-- self.turbu_z=0-- self.octaves_=4 self.omega_=0.3 self.lambda_=3 self.ddd=1 self.speed_=0.5-- self.intensity_center=1-- self.no_shadow__=1--pour oui self.no_light__=1--pour oui end function glowc:destroy() end function glowc:load(stream) stream:readByte() self.col_red=stream:readDouble() self.col_green=stream:readDouble() self.col_blue=stream:readDouble() self.main_intensity_=stream:readDouble() self.FadeDistance_=stream:readDouble() self.FadePower_=stream:readDouble() self.scale__=stream:readDouble() self.turbu_x=stream:readDouble() self.turbu_y=stream:readDouble() self.turbu_z=stream:readDouble() self.octaves_=stream:readDouble() self.omega_=stream:readDouble() self.lambda_=stream:readDouble() self.ddd=stream:readDouble() self.intervals_=stream:readDouble() self.confidence_=stream:readDouble() self.method_=stream:readDouble() self.sample_mini=stream:readDouble() self.sample_maxi=stream:readDouble() self.speed_=stream:readDouble() self.intensity_center=stream:readDouble() self.no_shadow__=stream:readBoolean() self.no_light__=stream:readBoolean() end function glowc:save(stream) stream:writeByte(2) stream:writeDouble(self.col_red) stream:writeDouble(self.col_green) stream:writeDouble(self.col_blue) stream:writeDouble(self.main_intensity_) stream:writeDouble(self.FadeDistance_) stream:writeDouble(self.FadePower_) stream:writeDouble(self.scale__) stream:writeDouble(self.turbu_x) stream:writeDouble(self.turbu_y) stream:writeDouble(self.turbu_z) stream:writeDouble(self.octaves_) stream:writeDouble(self.omega_) stream:writeDouble(self.lambda_) stream:writeDouble(self.ddd) stream:writeDouble(self.intervals_) stream:writeDouble(self.confidence_) stream:writeDouble(self.method_) stream:writeDouble(self.sample_mini) stream:writeDouble(self.sample_maxi) stream:writeDouble(self.speed_) stream:writeDouble(self.intensity_center) stream:writeBoolean(self.no_shadow__) stream:writeBoolean(self.no_light__) end function glowc:getProperties() return "GLOW", -- ici c'est le mon du plugin que tu retrouve sur l'icone "ACC163CCECE445CC", "3322333333333333".. "3332222333333333".. "3333222223333333".. "3333332222233333".. "3333333222223333".. "3333333222222333".. "3333333222222333".. "3333333322222333".. "3333333322222333".. "3333333322222333".. "3333333222222333".. "3333332222223333".. "3333322222233333".. "3333222223333333".. "3332223333333333".. "3322333333333333" end function glowc:getDialog(dialog) dialog:addSeparator("GLOW:") self.helpID=dialog:addButton("Help") dialog:addSeparator("Couleurs:") self.col_redID=dialog:addEditBox("col_red:",self.col_red,0,2,2) self.col_greenID=dialog:addEditBox("col_green:",self.col_green,0,2,2) self.col_blueID=dialog:addEditBox("col_blue:",self.col_blue,0,2,2) self.scale__ID=dialog:addEditBox("scale__:",self.scale__,0,20,2) self.speed_ID=dialog:addEditBox("Map_speed_:",self.speed_,0.001,0.999,3) self.turbu_xID=dialog:addEditBox("turbu_x:",self.turbu_x,0.00,5,2) self.turbu_yID=dialog:addEditBox("turbu_y:",self.turbu_y,0.00,5,2) self.turbu_zID=dialog:addEditBox("turbu_z:",self.turbu_z,0.00,5,2) self.octaves_ID=dialog:addEditBox("octaves_ :",self.octaves_,0.1,20,1) self.omega_ID=dialog:addEditBox("omega_:",self.omega_,0.1,20,1) self.lambda_ID=dialog:addEditBox("lambda_:",self.lambda_,-5,20,1) self.dddID=dialog:addEditBox("ddd:",self.ddd,-5,10,2) self.intensity_centerID=dialog:addEditBox("intensity_center:",self.intensity_center,0.01,15,1) dialog:addSeparator("Light transfo:") self.no_light__ID=dialog:addCheckBox("No_light On/Off" ,self.no_light__) self.main_intensity_ID=dialog:addEditBox("main_intensity_:",self.main_intensity_,0.001,10,3) self.FadeDistance_ID=dialog:addEditBox("FadeDistance_:",self.FadeDistance_,0,20,2) self.FadePower_ID=dialog:addEditBox("FadePower_:",self.FadePower_,0,10,2) dialog:addSeparator("Media:") self.sample_miniID=dialog:addEditBox("sample_mini:",self.sample_mini,0,10,2) self.sample_maxiID=dialog:addEditBox("sample_maxi:",self.sample_maxi,0,10,2) self.intervals_ID=dialog:addEditBox("intervals_:",self.intervals_,0,10,2) self.confidence_ID=dialog:addEditBox("confidence_:",self.confidence_,0,10,2) self.method_ID=dialog:addEditBox("method_:",self.method_,1,3,0) self.no_shadow__ID=dialog:addCheckBox("No_shadow_ On/Off" ,self.no_shadow__) end function glowc:valueChanged(index,value) -- HELP if index==self.helpID then messageBox("About GLOW ", "Warp's macro's adaptation by Philippe Gibone\n\n".. "No Glow in Moray ! No troubles. \n".. "Here is Glow.lua. Ole ! \n".. "Create with a media with it's owns adjusting.\n".. "We can transform this Glow into Looks_like \n".. "to emit light, change the colors, change \n".. "the intensity of the edge end the center, \n".. "change the speed of the map. Etc... Try it! \n".. "Next steep: Project shadows. How ? I don't know... \n".. "Meanwhile Keith Hull's plugin... \n\n".. "Caramba. \n".. "Sylvain \n".. "PS:I translate the code in Lua language for fun. \n".. "Comments welcome of course. \n".. " " ) return end if index==self.col_redID then self.col_red=value self:redraw() end if index==self.col_greenID then self.col_green=value self:redraw() end if index==self.col_blueID then self.col_blue=value self:redraw() end if index==self.main_intensity_ID then self.main_intensity_=value self:redraw() end if index==self.FadeDistance_ID then self.FadeDistance_=value self:redraw() end if index==self.FadePower_ID then self.FadePower_=value self:redraw() end if index==self.scale__ID then self.scale__=value self:redraw() end if index==self.turbu_xID then self.turbu_x=value self:redraw() end if index==self.turbu_yID then self.turbu_y=value self:redraw() end if index==self.turbu_zID then self.turbu_z=value self:redraw() end if index==self.octaves_ID then self.octaves_=value self:redraw() end if index==self.omega_ID then self.omega_=value self:redraw() end if index==self.lambda_ID then self.lambda_=value self:redraw() end if index==self.dddID then self.ddd=value self:redraw() end if index==self.intervals_ID then self.intervals_=value self:redraw() end if index==self.confidence_ID then self.confidence_=value self:redraw() end if index==self.method_ID then self.method_=value self:redraw() end if index==self.sample_miniID then self.sample_mini=value self:redraw() end if index==self.sample_maxiID then self.sample_maxi=value self:redraw() end if index==self.speed_ID then self.speed_=value self:redraw() end if index==self.intensity_centerID then self.intensity_center=value self:redraw() end if index==self.no_shadow__ID then self.no_shadow__=value self:redraw() end if index==self.no_light__ID then self.no_light__=value self:redraw() end scene:invalidate() end function glowc:getInside(x,y,z) return nil end function glowc:wireframe(wire) -- 3 lignes wire:line(0.7,0,0,-0.7,0,0.0) wire:line(0,0.7,0,0,-0.7,0) wire:line(0,0,0.7,0,0,-0.7) wire:circleY(0,0,0,0.25) wire:circleX(0,0,0,0.25) wire:circleZ(0,0,0,0.25) end function glowc:toPOV(pov) local octaves_,omega_,lambda_,ddd,col_red,col_green,col_blue,main_intensity_,FadeDistance_,FadePower_,scale__,turbu_x,turbu_y,turbu_z,intervals_,confidence_,method_,sample_mini,sample_maxi,speed_ col_red=self.col_red-- col_green=self.col_green-- col_blue=self.col_blue main_intensity_=self.main_intensity_ FadeDistance_=self.FadeDistance_ FadePower_=self.FadePower_ scale__=self.scale__ turbu_x=self.turbu_x turbu_y=self.turbu_y turbu_z=self.turbu_z octaves_=self.octaves_ omega_=self.omega_ lambda_=self.lambda_ ddd=self.ddd intervals_=self.intervals_ confidence_=self.confidence_ method_=self.method_ sample_mini=self.sample_mini sample_maxi=self.sample_maxi speed_=self.speed_ intensity_center=self.intensity_center pov:write("#include \"colors.inc\"") pov:write("union {//debut") pov:write("#macro Glowc(GlowColor, Scale, FadeDistance, FadePower) ") pov:write(" ") if self.no_light__==1 then pov:write("light_source { 0*x // light's position (translated below) ") pov:write(" color rgb GlowColor // light's color ") pov:write(" area_light ") pov:write(" <3, 0, 0> <0, 0, 3> ") pov:write(" 4, 4 // total number of lights in grid (4x*4z = 16 lights) ") pov:write(" adaptive 2 // 0,1,2,3... ") pov:write(" jitter // adds random softening of light ") pov:write(" circular // make the shape of the light circular ") pov:write("// orient // orient light ") pov:write(" #if (FadeDistance > 0) ") pov:write(" fade_distance FadeDistance ") pov:write(" #end ") pov:write(" #if (FadePower > 0) ") pov:write(" fade_power FadePower ") pov:write(" #end ") pov:write(" looks_like { ") end pov:write(" sphere { 0, 1 ") pov:write(" hollow ") if self.no_shadow__==1 then pov:write(" no_shadow ") end pov:write(" pigment { rgbft <1,1,1,0,1> } ") pov:write(" interior { media ") pov:write(" { emission 1/Scale ") pov:write(" density ") pov:write(" { spherical density_map ") pov:write(" { [0 rgb 0] ") pov:write(" [0.3 rgb 0] ") pov:write(" // [",speed_,"-.25 rgb GlowColor*.25] ") pov:write(" [",speed_," rgb GlowColor*.5] ") pov:write(" [1 rgb 1*",intensity_center,"] ") pov:write(" } ") pov:write(" warp {turbulence <",turbu_x,",",turbu_y,",",turbu_z,"> octaves ",octaves_," omega ",omega_," lambda ",lambda_,"} ") pov:write(" } ") pov:write(" samples ",sample_mini,",",sample_maxi," ") pov:write(" intervals ",intervals_," ") pov:write(" confidence ",confidence_," ") pov:write(" method ",method_," ") pov:write(" } ") pov:write(" } ") pov:write(" scale Scale ") pov:write(" } ") if self.no_light__==1 then pov:write(" } } ") end pov:write(" ") pov:write(" ") pov:write("#end ") pov:write(" ") pov:write("//#macro Glowc(GlowColor , Scale , FadeDistance , FadePower )") pov:write("object {Glowc(<",col_red,",",col_green,",",col_blue,">*",main_intensity_,", ",scale__," ,",FadeDistance_,",",FadePower_," )}") pov:transforms(self.xforms) pov:write("}//fin ") end registerClass(glowc,"glowc")