def _init_terrain(self): layout = "Layout0" hmap = "Data/Terrain/" + layout + "/heightmap.png" # TerrainMeshRenderer.generateBounds(hmap, "Data/Terrain/" + layout + "bounds.bin") # sys.exit(0) terrainOffset = Vec3(-4096, -4096, 70.0) terrainScale = Vec3(1.0, 1.0, 700.0) self.terrain = TerrainMeshRenderer() self.terrain.setHeightfieldSize(8192) self.terrain.setCullingEnabled(False) self.terrain.loadChunkMesh("Core/Resources/Chunk32.bam") self.terrain.setFocus(base.cam, base.camLens) self.terrain.loadBounds("Data/Terrain/" + layout + "bounds.bin") self.terrain.setTargetTriangleWidth(7.0) self.terrain.setPos(terrainOffset) self.terrain.setScale(terrainScale) self.terrain.create() node = self.terrain.getNode() node.reparentTo(render) self.terrainShadow = TerrainMeshRenderer() self.terrainShadow.setHeightfieldSize(8192) self.terrainShadow.loadChunkMesh("Core/Resources/Chunk32.bam") self.terrainShadow.setFocus(base.cam, base.camLens) self.terrainShadow.setTargetTriangleWidth(7.0) self.terrainShadow.loadBounds("Data/Terrain/" + layout + "bounds.bin") self.terrainShadow.setPos(terrainOffset) self.terrainShadow.setScale(terrainScale) self.terrainShadow.setCullingEnabled(False) self.terrainShadow.create() nodeShadow = self.terrainShadow.getNode() nodeShadow.reparentTo(render) hmap = loader.loadTexture("Data/Terrain/" + layout + "/heightmap.png") hmap.setWrapU(Texture.WMClamp) hmap.setWrapV(Texture.WMClamp) node.setShaderInput("heightmap", hmap) nodeShadow.setShaderInput("heightmap", hmap) fmap = loader.loadTexture("Data/Terrain/" + layout + "/flowmap.png") fmap.setWrapU(Texture.WMClamp) fmap.setWrapV(Texture.WMClamp) node.setShaderInput("flowmap", fmap) for material in ['rock', 'grass', 'gravel', 'snow', 'moss']: for i in xrange(2): tex = loader.loadTexture("Data/Terrain/Materials/" + material + "_" + str(i + 1) + ".png") tex.setWrapU(Texture.WMRepeat) tex.setWrapV(Texture.WMRepeat) tex.setFormat(Texture.FSrgbAlpha) tex.setMinfilter(Texture.FTLinearMipmapLinear) tex.setMagfilter(Texture.FTLinear) tex.setAnisotropicDegree(16) node.setShaderInput( material + ("Diffuse" if i == 0 else "Normal"), tex)
def _init_terrain(self): """ Inits the terrain """ layout = "Layout0" hmap = "Data/Terrain/" + layout + "/heightmap.png" bounds_file = "Data/Terrain/" + layout + "bounds.bin" if not isfile(bounds_file): print("Generating terrain bounds ..") TerrainMeshRenderer.generateBounds( hmap, "Data/Terrain/" + layout + "bounds.bin") terrainOffset = Vec3(-4096, -4096, 70.0) terrainScale = Vec3(1.0, 1.0, 700.0) self.terrain = TerrainMeshRenderer() self.terrain.set_heightfield_size(8192) self.terrain.set_culling_enabled(False) self.terrain.load_chunk_mesh("Core/Resources/Chunk32.bam") self.terrain.set_focus(base.cam, base.camLens) self.terrain.load_bounds(bounds_file) self.terrain.set_target_triangle_width(7.0) self.terrain.set_pos(terrainOffset) self.terrain.set_scale(terrainScale) self.terrain.create() node = self.terrain.get_node() node.reparentTo(render) self.terrain_shadow = TerrainMeshRenderer() self.terrain_shadow.set_heightfield_size(8192) self.terrain_shadow.load_chunk_mesh("Core/Resources/Chunk32.bam") self.terrain_shadow.set_focus(base.cam, base.camLens) self.terrain_shadow.set_target_triangle_width(7.0) self.terrain_shadow.load_bounds(bounds_file) self.terrain_shadow.set_pos(terrainOffset) self.terrain_shadow.set_scale(terrainScale) self.terrain_shadow.set_culling_enabled(False) self.terrain_shadow.create() nodeShadow = self.terrain_shadow.get_node() nodeShadow.reparentTo(render) hmap = loader.loadTexture("Data/Terrain/" + layout + "/heightmap.png") hmap.set_wrap_u(Texture.WM_clamp) hmap.set_wrap_v(Texture.WM_clamp) hmap.set_format(Texture.F_r16) node.set_shader_input("heightmap", hmap) nodeShadow.set_shader_input("heightmap", hmap) fmap = loader.loadTexture("Data/Terrain/" + layout + "/flowmap.png") fmap.set_wrap_u(Texture.WMClamp) fmap.set_wrap_v(Texture.WMClamp) node.set_shader_input("flowmap", fmap) for material in ['rock', 'grass', 'gravel', 'snow', 'moss']: for i in xrange(2): tex = loader.loadTexture("Data/Terrain/Materials/" + material + "_" + str(i + 1) + ".png") tex.set_wrap_u(Texture.WM_repeat) tex.set_wrap_v(Texture.WM_repeat) tex.set_format(Texture.F_srgb_alpha) tex.set_minfilter(Texture.FT_linear_mipmap_linear) tex.set_magfilter(Texture.FT_linear) tex.set_anisotropic_degree(16) node.set_shader_input( material + ("Diffuse" if i == 0 else "Normal"), tex)