Visual C++ edition to use with version 1.8.0 of Panda 3D ?

Thank you Tah for the links and all your help. :slight_smile:

Does Panda3D C++ class usage has one to one relationship with their Python counterpart ? I am asking this because even after so many years, most of the parts of C++ manual is incomplete with a “To-Do” markings here and there - which is of course very frustrating for new comers like me. Please note I am using the 1.8.0 version.

Thanks,

Hi

I think most have their counterparts, but I have see a few python functions that are more of convenience functions. I’ve even looked into some of those (don’t remember which) to see what functions were being called inside that did have counterparts.

The function names in python are abcDefGhi() where the translations into C++ is abc_def_ghi()
example NodePath attachNewNode() is attach_new_node() in C++; you probably already noticed that.

Thank you Tah for sharing all your viewpoints. I guess I will have to go through the manual first - top to bottom , before I can start developing any game.

Tah, can you confirm if the following is true ?

"
Get models from your 3d modeller to Panda3D easily:

Powerful EGG/BAM format
EGG exporters for Maya, Blender and 3ds Max
Support for other 3d formats (collada, x, lwo, obj, dxf, wrl, flt)
Converters between different 3d formats and EGG
" - As displayed in the features section of Panda.

My question is if Panda supports loading models both static and animated with .X or .FBX why do we need to convert them to .egg using converters ? Any idea ?

Panda can load an .x file directly, but it does this by invoking the egg2x converter in the background with the default parameters. If this is adequate to your needs, then you don’t need to convert it yourself.

David

you can find those converters in your installed Panda folder under the bin folder (ex: C:\Panda3D-1.8.0\bin)

I use Blender3d to make and convert some models (using Blender3d version 2.49 has many import and export). For Blender3d v2.49 there is an egg exporter called “chicken” and for versions greater is yabee.

chicken for Blender 2.49
[url]Chicken, an Egg exporter for Blender 2.49 and lower]
http://sourceforge.net/projects/chicken-export/files/

yabee for Blender after 2.49
[url]Yet Another Blender Egg Exporter (YABEE)]

these are python plugins for Blender3d, where to add them is mentioned in the posts

I also have a script that allows Blender to import Ogre3D Mesh files, then I export to egg with the chicken script.

Hey I just saw this post:
[url]C++ tutorials are ready to be released! (www.panda3d.org.cn)]

Thank you Tah and Drwr for explaining everything … :slight_smile:

  • This is great news Tah but I am a bit sad to know that C++ classes are not that much feature rich as their python counterparts. I wonder why the creators did not add features to C++ classes the same as those for pythons. … :frowning:

I am poised with another question when exporting models from blender. The chicken exporter currently available exports

static meshes and armature animation(bone skeleton structure), materials, vertex colors, alpha textures, tags, object types etc.

Does this mean that when I export my model from blender2.49b using chicken exporters the special maps - normal map texture, bump map texture, specular map texture, diffuse map texture, lightmap texture etc. also gets exported too ? So that when I load the model in Panda3D, the model looks and behaves exactly the same as in blender ?

If the answer is no, then what do I have to do in order to achieve it ?

Hi

I don’t have any experience exporting models with animations or vertex colors, but I have exported with materials and textures.

Take a look in the “Pipeline” forum for Blender related things:
https://discourse.panda3d.org/viewforum.php?f=2

hmmm, maybe you should have sent your post into that forum, that way all the people that use python in programming Panda will see the post too. Repost to “Pipeline” or “General Discussion”, because right now only those people doing C++ work will see your post. I wish I could be more help; I’m still learning Blender myself, and still a new guy with Panda too.

Well, about python, many game engines have a scripting language like python or lua. They act as an interpreter type language where you don’t have to recompile and can make changes “on the fly” as game is running. Panda is C++ “under the hood” so it can be speedy. I hear that depending on how you code with python, it can slow things down a little. Some people will write certain routines in C++ and then access it in python. I’ve been doing all my work in C++ since I know that the most.

Tah, thank you for sticking with me and yes I will post a new thread about feature lags in C++ classes to the forum you have mentioned.

Like you I am also new to Blender and Panda. My background is basic knowledge of C and core Java. So I am also more or less new to C++. Now since the game industry always demands that games be made in C++ rather than any other language to leverage every computational power the pc’s hardware can deliver I have decided to go with the C++ route even when it is advised in the manual to use Python.

Now when compiling my first application from the manual, I am getting this displayed in the command console -

:display(warning): Unable to load: The specified procedure could not be found
Known pipe types:
(all display modules loaded.)
No graphics pipe is available!
Your Config.prc file must name at least one valid panda display
library via load-display or aux-display.

Any idea how to fix this ?

I am using this code -


#include "pandaFramework.h"
#include "pandaSystem.h"

PandaFramework framework;

int main(int argc, char *argv[]){
	//open a new window framework
	framework.open_framework(argc, argv);
	//set the window title to my Panda3D window
	framework.set_window_title("My Panda3D Window");
	//open the window
	WindowFramework *window = framework.open_window();

	//here is room for your own code

	//do the main loop, equal to run() in python
	framework.main_loop();
	//close the window framework
	framework.close_framework();
	return(0);
}

Have you updated your video card drivers to the latest version?

Yes of course. 296.10-desktop-win7-winvista-64bit-english-whql

I am using Panda 1.8.0 on Win 7 SP1 X64 PC, 9400GT NVIDIA Graphics Card.

What can be causing this ?

I have also opened the prc file and added an aux display involving directx , but still that error persists :frowning:


load-display pandagl
aux-display pandadx9

#load-display pandadx9
#load-display pandadx8
#load-display pandagles
#load-display tinydisplay

“The specified procedure could not be found” is an error from Windows that usually means some dependent DLL wasn’t found on your PATH. It doesn’t tell you which DLL was missing, though.

You could try running “test_interrogate libpandagl.dll” which will attempt to load libpandagl.dll and report the full Windows error message if it fails.

David

Thank you rdb, I will look into the steps directed by you and let you know of the outcome … it is late here 3 A.M so I will try that tomorrow … thanks for your support.

I tried the command mentioned by you in the command console and got the following output message -


Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

D:\Panda3D-1.8.0\bin>test_interrogate libpandagl.dll
Loading libpandagl.dll
:interrogatedb(error): Unable to find libp3downloader.in on .
:interrogatedb(error): Unable to find libp3express.in on .
:interrogatedb(error): Unable to find libp3recorder.in on .
:interrogatedb(error): Unable to find libp3pgraphnodes.in on .
:interrogatedb(error): Unable to find libp3pgraph.in on .
:interrogatedb(error): Unable to find libp3movies.in on .
:interrogatedb(error): Unable to find libp3grutil.in on .
:interrogatedb(error): Unable to find libp3chan.in on .
:interrogatedb(error): Unable to find libp3pstatclient.in on .
:interrogatedb(error): Unable to find libp3char.in on .
:interrogatedb(error): Unable to find libp3collide.in on .
:interrogatedb(error): Unable to find libp3device.in on .
:interrogatedb(error): Unable to find libp3dgraph.in on .
:interrogatedb(error): Unable to find libp3display.in on .
:interrogatedb(error): Unable to find libp3pipeline.in on .
:interrogatedb(error): Unable to find libp3event.in on .
:interrogatedb(error): Unable to find libp3gobj.in on .
:interrogatedb(error): Unable to find libp3gsgbase.in on .
:interrogatedb(error): Unable to find libp3linmath.in on .
:interrogatedb(error): Unable to find libp3mathutil.in on .
:interrogatedb(error): Unable to find libp3parametrics.in on .
:interrogatedb(error): Unable to find libp3pnmimage.in on .
:interrogatedb(error): Unable to find libp3text.in on .
:interrogatedb(error): Unable to find libp3tform.in on .
:interrogatedb(error): Unable to find libp3putil.in on .
:interrogatedb(error): Unable to find libp3audio.in on .
:interrogatedb(error): Unable to find libp3pgui.in on .
:interrogatedb(error): Unable to find libp3net.in on .
:interrogatedb(error): Unable to find libp3nativenet.in on .
:interrogatedb(error): Unable to find libp3dxml.in on .
:interrogatedb(error): Unable to find libp3vrpn.in on .
:interrogatedb(error): Unable to find libp3pnmtext.in on .

0 manifests:

0 globals:

0 global types:

0 global functions:

D:\Panda3D-1.8.0\bin>

Ironically the python samples that come with the default binary installation package works flawlessly !

Please help I am stuck !! :frowning:

That is actually the correct output for test_interrogate, and it means it loaded the dll without problems. Also the fact that the samples work indicate that there is nothing wrong with the dll itself.

But it doesn’t load when you try to run it in your own application. So, something about the dll is incompatible with your own compiled application. I can’t tell you why this is from the little information you have provided; but it could be a problem with your PATH settings (maybe some required DLL is not on your PATH when you run your own application); or it could be a problem with your project settings (maybe you have compiled using Debug instead of Release settings, or used MSVS2010 instead of MSVS2008, or any number of other things you shouldn’t do), or it could be a problem with multiple versions of these DLL’s (maybe you compiled against a different version of Panda than the one you are trying to run against).

David

In the manual - panda3d.org/manual/index.php … tudio_2008

It has been said -

Do I need to do this when compiling using the binary build ? If so where do I set this in VS2008 express ?

I am following everything from that manual page and the project is getting built successfully but giving that error when I try to run the exe ! How do I set the required dependencies path in vs2008 express when running the exe ?

I have already added the following dependencies as shown in the manual -

Do I need to add more lib files ? Please guide.

Just occurred to my mind - Is it mandatory to install panda3D at C:\ ? Because I have installed at D:\

Here’s an idea. Try setting:

show-dll-error-dialog 1

in your Config.prc file. This is supposed to enable the Windows error dialog that pops up when a DLL fails to load. It should give you more useful information about what is going wrong.

David

I tried putting show-dll-error-dialog 1 at the end of the config.prc file. But when I run the exe no Windows error dialog pops up. In the command window - I get these lines displayed -

Previously it was something like this-

Dead End ??? :frowning: … somebody please help or else I will have to leave Panda …:frowning: This is driving me insane …

What happens if you put a call to LoadLibrary(“libpandagl.dll”); in your main program?

Are you sure you’re even loading the standard prc file in the first place? What happens if you write:

#include "configPageManager.h"

ConfigPageManager *cpMgr = = ConfigPageManager::get_global_ptr();
cerr << *cpMgr << "\n";

David