Panda3D Development Wiki created

Panda3D development wiki created:

manageddreams.com/pandawiki

Whether this will be its final place is in flux at this time, but rest assured that any data in this wiki will be preserved should the location change at some point near-term.

The characteristics of this wiki are:

  • it contains a growing resource of information for Panda3D developers
  • it’s using GNU Free Documentation Licence 1.2, so no issues as far as ownership, attribution, copyright etc
  • you are free to make a backup whenever you want :astonished: Simply download the nightly tarball from manageddreams.com/pandawiki/pand … kup.tar.gz.

How does this sound?

Hugh

Pretty exciting. The guts of the source could definitely use some documentation, especially if people are going to start adding to it. If people don’t have a clear picture of how things work, the results will not be very elegant nor fit with the overall design - and so not be useful to the rest of Panda3d users.

Personally, I’m interested in Panda3d supporting a few additional renderables, such as heightmapped terrain, and primitives like are in Second Life. Just this morning I really read through your thread on ppremake, and realized that you’re working on fractal prims…and there is a project already out there for an open-source metaverse. Small world =)

Whoa! Awesome!!!

Yes, there’s basically three or four OSMP projects in the queue for Panda3D:

FractalSpline is well on the go. As you can see, its largely finished in OpenGL, its just porting to Panda3D which is taking…well, longer than to write it in OpenGL actually :unamused: but I think it’s worth it, since Panda3D is a professional engine, so its all pretty interesting.

3d object editing already exists within OSMP. (See screenshots: metaverse.sourceforge.net/screenshots.html ) Unsure exactly how we’ll migrate it to Panda. I’m thinking maybe just rewrite it in Python, since it doesnt have to run really fast.

heightmapped terrain shouldnt be too tricky. We do have heightmapped terrain right now, as you can see in the screenshots, but it kindof sucks. On the other hand, thats more to do with game logic and physics than actual rendering.

The project which I’d really love to see someone look into is: a parametric avatar. That would really rock. Basically the ability to define how an avatar looks by just a bunch of say 100 numbers, like nose length, chin length etc. You know what we’re after, right :slight_smile:

The advantage of defining an avatar in this way is that it gives a very smooth end-user experience, and its lean on bandwidth.

Obviously, not really an easy project, but if you could get it working, it’d most likely get a lot of attention from just about every streaming MMOG project out there.

Anyway, there you go, those are my projects for Panda3D. If you’re interested in working together on this that could be really cool!

By the way, we got a brief mention in Wired last December: wired.com/news/games/0,2101,6586 … _tophead_1

Hugh

I was an early player in Second Life…haven’t been there much in the past year. But the customizable avatars there really impressed me. The range of different humanoids you can create with it, and then accessorize by attaching prims to…cool stuff. I would definitely love to see avatars that are manipulated in that way.

When I saw the avatars in SL, my first thought was to take that concept and generalize it to include other body forms such as quadrapeds, insects, fantasy forms such as winged quadrapeds, etc.

Have you seen the makehuman project? It’s a python plugin for Blender, that lets you make humanoid models by manipulating variables. It is impressive, but the website is extraordinarily unhelpful in the way of documentation. (makehuman.org)

My project is not a world as open-ended as a metaverse. When I play an MMO like Everquest I chafe at how static the world is, and how I can’t truly ‘live there’ as a player. And when I mess around in Second Life, there isn’t really any ‘game’ there, although there are games there, within the world - it’s not the same.

My project is a smaller-scale game, meant to be played by hundreds rather than thousands, with an overriding theme and gameplay rules. It will depend on many of the same things a metaverse would, but will not put everything in the hands of the players.

So my needs have a lot in common with a more open metaverse, but I certainly do not need everything. Physics, for example, are not important to me beyond simple ballistic tragectories and bouncing for special effects - none of the physics will be relevant to the game simulation. This fact alone, I think, means my client-server model can be much more simple than a metaverse would need.

I definitely need online, in-game building of the game world, using prims (whether simple, or larger pre-built sections). I need customizable avatars. And I need to do my coding in a rapid development language such as Python.

My project is really just an idea at this point. I’ve settled on Panda3d to start messing around with testing some things, and it is nice for throwing together ideas quickly. I didn’t come to Panda thinking of it as my endgame solution, but I really think now that it is right up my alley =)

When I play an MMO like Everquest I chafe at how static the world is, and how I can’t truly ‘live there’ as a player. And when I mess around in Second Life, there isn’t really any ‘game’ there, although there are games there, within the world - it’s not the same.

Yes, yes, yes! This is exactly what I think!

Have you seen the makehuman project? It’s a python plugin for Blender, that lets you make humanoid models by manipulating variables. It is impressive, but the website is extraordinarily unhelpful in the way of documentation. (makehuman.org)

That sounds like a really good link! For a number of reasons. Hmmm, Python too. So, perhaps we can take code from that project and get it to generate models for Panda???

Hugh

That’s what I was considering. I don’t think it could be used directly, and integrated into the panda3d source-proper however, because makehuman is under the GPL.

But, a lot might be learned from looking at it, and models for a game are going to be a lot less complex than those for rendering. And certainly models created by it in blender are usable without licensing problems. If we have original code that works on such models, a lot of the work may already be done - creating the base model, presumably one that is structurally compatible with the kinds of shape-altering that the blender plugin does. And therefore, the kind of shape altering we would want in a morphable avatar.

makehuman is under the GPL

Ok, I think its not an issue.

What you can do is to create a brandnew sourceforge project for this.

The goal of the project is to render parametric avatars. It’s not bound to any particular renderer, and initially it can render only to OpenGL.

The project can be used under any project and can be wrapped to use any renderer, ie CrystalSpace etc.

Obviously a project based on makehuman would use the GPL, although I’m not sure if this is a route that you want to go down?

Anyway… the core of the project is GPL, and based on makehuman, then you write a wrapper class or two to make your project linkable with Panda3D.

The Panda3D wrapper classes can be under Panda3D licence. They can go in a different directory, and be optional.

How does that sound?

Hugh

I don’t think you can modify the makehuman code to make something that you release under a different license…If it were under the lgpl you could just use it as a library, but it’s gpl. As I understand it, if you use the code from a GPL project, through direct integration or wrapping…it’s part of your project and needs to stay gpl.

Maybe I’m wrong?

Ummmmm, I’m not sure … maybe you are right?

That’s important, since my entire project is GPL right now.

Hmmm.

Hugh

I don’t think that’s a problem, since Panda3D’s license is less restrictive than GPL. You can’t incorporate a GPL project into Panda3D, but you can certainly write a GPL project that uses Panda3D (and remains GPL itself).

So, your project is GPL. It uses makehuman for generating characters; no problem, that’s also GPL. Part of your project also links with Panda3D and generates Panda3D data structures; no problem, Panda3D doesn’t mind.

As long as your GPL project does not try to become part of the Panda3D codebase, under the Panda3D license, there’s no conflict.

That’s not to say you can’t contribute code to the Panda3D project that facilitates linking with a GPL project (such as your own project), either. That code itself would be part of Panda3D, and not GPL. However, any program that takes advantage of that code, and therefore uses both Panda3D and your GPL project, would be GPL.

David

By the way, I’d like to interject how awesome the wiki you’ve put together so far is. You have a remarkable ability to collect together information from various sources, abstract out the essence of it, organize it, and rephrase it clearly. The amount and quality of the documentation you’ve produced in the span of just a couple of days is simply staggering!

And can I say how cool it is that you’re willing to contribute this effort–and your talent–towards Panda’s needs?

So thanks! This really rocks!

David

Thanks David!

If you link against GPL code then your code becomes GPL. Likewise if you include GPL code in your project, your code becomes GPL.

If you dynamically link against LGPL code, your code license doesn’t become LGPL (retains original (license). If you statically link against LGPL code, your code license becomes LGPL. If you include LGPL code in your project, your code becomes LGPL.

I think that’s how it is - some people despise the GPL, but I don’t have a problem with it. As long as you know where you stand. If you’re going commercial, link against LGPL projects instead.

I am not a lawyer, nor am I an expert in licensing.

Tis just the way the wookie mumbles. 8)

If I understand correctly, if we link GPL code with Panda, we would have to add the GPL licence onto the licences for that code? Which is not an issue, since the Panda licence and GPL licences are not incompatible?

Of course, Panda itself would not be able to include the GPL code in their core distribution, not even as a third party library, unless they wanted to add the GPL licence onto their code.

However, any GPL application would be able to link with Panda and one’s code, by simply making Panda available under the GPL + Panda licence?

Am I reading this right?

Hugh

To be honest, I start to get confused when multiple licenses get involved. I never understood how you can release something under two licenses.

Well, in any case, I get the impression you are wanting to develop a project in closed-source? So that rules GPL out for you straight off the bat?

Hugh

You can’t integrate GPL code into panda without making panda GPL, because panda’s license is more permissive than GPL.

If you don’t mind your whole project being gpl, you could take panda and your gpl code and make the whole thing gpl. But other people could not take it and close it up again.

So if you’re already gpl, you don’t care really, but you can’t contribute GPL code to panda ‘proper’, as I understand it.

I, too, was very interested in makehuman a few weeks ago.

But insofar as I can tell, the algorithms used in makehuman are trivial. It’s morphing. Plain old ordinary linear interpolation and extrapolation. Now, I could be wrong about that - maybe I’ve misunderstood what they’re doing. But if I’m right, then we’re in business. Panda already contains morphing code. So do max and maya. If that’s true, we don’t need their code.

What we need are their morph targets. The actual models themselves.

So if you’re already gpl, you don’t care really, but you can’t contribute GPL code to panda ‘proper’, as I understand it.

Yes, but that’s never been my intention. If everyone adds their own favorite library into Panda, eventually we’d just get bloatware.

Panda itself - Panda core - should IMHO stay tight. Then there can be libraries around the edges that can just be bolted on.

The advantages of this are:

  • Panda itself stays tight; easy to build; fast; etc
  • the libraries themselves can be bolted on to multiple renderers (Crystal, Ogre, etc )
  • the code of both Panda and the libraries is relatively easy to understand since the interfaces are well-defined and relatively stable

Hugh