#! /usr/bin/python -O # -*- python -*- # Slune # Copyright (C) 2002-2003 Jean-Baptiste LAMY # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # launch this script to generate the level import math, os, os.path import copy import soya import soya.model as model import soya.soya3d as soya3d import soya.editor.main import soya.land import slune.level lev = slune.level.Level() w = soya3d.World(lev) w.set_xyz(-20.0, -20.0, -20.0) atm = soya3d.Atmosphere() atm.ambient = (0.6, 0.6, 0.5, 1.0) atm.bg_color = (0.6, 0.4, 0.3, 1.0) atm.skyplane = 1 atm.sky_color = (1.0, 1.0, 0.2, 1.0) atm.fog_color = (0.6, 0.4, 0.3, 1.0) atm.fog_type = 0 atm.fog_start = 20.0 atm.fog_end = 50.0 atm.fog = 1 atm.fog_density = 0.001 atm.cloud = model.Material.get("clouds1") w.atmosphere = atm land = soya.land.Land() land.from_image(model.Image("/home/blam/data/construct/racinde_2.png")) land.map_size = 8 land.scale_factor = 1.5 land.multiply_height(30.0) land.set_texture_layer(model.Material.get("sand1"), 0.0, 13.0) land.set_texture_layer(model.Material.get("grass1"), 12.0, 17.0) land.set_texture_layer(model.Material.get("grass2"), 16.0, 22.0) land.set_texture_layer(model.Material.get("rocks1"), 21.0, 50.0) import Image circuit = Image.open("/home/blam/data/construct/racinde_1.png") m = model.Material.get("ground5") i = 0 while(i < 129): j = 0 while(j < 129): if circuit.getpixel((i, j)) == (0, 0, 0): land.set_texture(i, j, m) j = j + 1 i = i + 1 circuit = Image.open("/home/blam/data/construct/racinde_3.png") m = model.Material.get("ground6") i = 0 while(i < 129): j = 0 while(j < 129): if circuit.getpixel((i, j)) == (0, 0, 0): land.set_texture(i, j, m) j = j + 1 i = i + 1 w.set_shape(land) ww = soya3d.World() w2 = soya3d.World.get("construct-racinde") i = 0 while (i < 3): w3 = w2.children[i] for face in w3: ww.add(face) i = i + 1 v = soya3d.Volume(w) shap = ww.shapify() shap.subdivide(50, 30.0) shap.build_tree() v.set_shape(shap) v.set_xyz(20.0, 20.0, 20.0) w.filename = "world-racinde" w.save() lev.filename = "level-racinde" lev.save() print '[ OK ]' # lev = slune.level.Level() # w = soya3d.World(lev) # w.set_xyz(-20.0, -20.0, -20.0) # atm = soya3d.Atmosphere() # atm.ambient = (0.3, 0.3, 0.3, 1.0) # atm.bg_color = (0.2, 0.1, 0.4, 1.0) # atm.skyplane = 1 # atm.sky_color = (1.0, 1.0, 0.5, 1.0) # atm.fog_color = (0.2, 0.1, 0.4, 1.0) # atm.fog_type = 0 # atm.fog_start = 10.0 # atm.fog_end = 50.0 # atm.fog = 1 # atm.fog_density = 0.0 # atm.cloud = model.Material.get("clouds1") # w.atmosphere = atm # land = soya.land.Land() # land.from_image(os.path.join(model.Image.PATH, "map.png")) # land.map_size = 8 # land.scale_factor = 1.5 # land.multiply_height(50.0) # land.set_texture_layer(model.Material.get("grass1"), 0.0, 15.0) # land.set_texture_layer(model.Material.get("rocks1"), 15.0, 21.0) # land.set_texture_layer(model.Material.get("snow1"), 21.0, 50.0) # w.set_shape(land) # light = soya3d.Light(lev) # light.set_xyz(20.0, 30.0, 20.0) # lev.filename = "at_the_mountain" # lev.save() # print "Done."