When you create a model from a world it only takes into account the soya
faces that are inside the world, not the body or anything else. Anyway,
even if it did I don't think you can make your game faster with this.
Turning a world into a model require a lot of CPU. As I said before, I
think the best thing you can do to speed your game is to make your own
space partitioning system, one that fits your game's requirements.
Souvarine.
Lunpa, The wrote:
> Scratch that. I built a test file out of one of the tutorial examples
> that shows the exact same problem without using any of the game's
> code. (but one of it's cal3d models)
>
> I have it attached if you're interested, but here's the relevant stuff:
>
> class loop_nest(soya.MainLoop):
> def __init__(self, foo):
> soya.MainLoop.__init__(self, foo)
> self.scene = foo
> self.terrain = soya.World(self.scene)
> self.model = soya.AnimatedModel.get("column")
> self.last = 0.0
> self.mode = 0
>
> def begin_round(self):
> if self.fps != self.last and self.mode !=2:
> self.last = self.fps
> self.mode = 1
> body = soya.Body(self.terrain, self.model)
> body.set_xyz(random.randint(-10,10), random.randint(-2,0),
> random.randint(-10,-10))
> body.rotate_y(random.randint(0,360))
> body.rotate_z(-90)
> print "body count: " + str(len(self.terrain.children))
> print "fps: " + str(self.fps)
>
> soya.MainLoop.begin_round(self)
>
> def end_round(self):
> if self.last <= 10.0 and self.mode == 1:
> self.mode = 2
> self.model = self.terrain.to_model()
> self.scene.remove(self.terrain)
> del self.terrain
> body = soya.Body(self.scene, self.model)
>
> soya.MainLoop.end_round(self)
>
>
>
>
>
> console output for me (I expect that results would very):
>
> body count: 1
> fps: 46.4293001448
> body count: 2
> fps: 44.2594641738
> body count: 3
> fps: 23.1871219634
> body count: 4
> fps: 14.7546727549
> body count: 5
> fps: 10.2251945623
> body count: 6
> fps: 8.34125407502
>
>
> Once the FPS drops below 10, the program will attempt to compress the
> containing world
> into a model like I theorized before, then remove existing bodies, and
> then load up the model
> in a single body instance to see if there is a change, but the World
> instance itself doesn't have any model data associated, just bodies,
> so it doesn't really do anything.
>
>
> I similar test I ran filled up the screen with 100 animated objects
> (albeit individually rather high in poly count): there was an
> identical pattern to refreshing that the game was showing with a lot
> of relatively simple models.
>
>
> Is there a better way to do this?
>
> Also, if anyone can think of a way to compress the Body instances of a
> world into a single model, (so I can finally put that thought to rest)
> it would be very appreciated :)
>
>
_______________________________________________
Soya-user mailing list
[email protected]
https://mail.gna.org/listinfo/soya-user