Gamux Game Entwicklung  
     

Left Nav Mit Facebook verbinden Registrieren Lexikon Lexikon Interessengemeinschaften Suchen Heutige Beiträge Alle Foren als gelesen markieren Right Nav

Left Container Right Container
 
Alt 17.01.2009, 09:32   #1 (permalink)
Erfahrener Benutzer
 

RSP-Fan eine Nachricht über ICQ schicken RSP-Fan eine Nachricht über Skype™ schicken
Standard Objekt in map einbinden

Hallo, erstmal!

Ich hab jetzt c4d und schon ein paar ojekte erstellt.

Wie kann ich jetzt ein programm in c++ schreiben, dass die objekte auf einer map einbindet?

Jetzt ein paar schtichworte:

Schwerkraft?
Steuerung?
Wie können die Objekte Rollen?
Welches Format exportieren?

Danke schon mal im voraus, ich bin schon gespannt!

Ich hab auch von einem Plugin von c4d gehört, mitdem man solche codeschnipsel irgendwie in 3d objekte kriegt.
RSP-Fan ist offline   Mit Zitat antworten An Facebook senden
Werbung
Alt 17.01.2009, 12:11   #2 (permalink)
Pixelschieber
Benutzerbild von Sebastian
 

Standard

Hallo,
am besten ist es wenn du dir Irrlicht oder eine ähnliche Engine mal genau anguckst. Diese Engine ist speziell zum Rendern von Maps und 3D-Objekten geeignet.
Als Format musst du nur eines nehmen, welches von Irrlicht unterstützt wird. Diese gibt es eigentlich schon bei c4d unter "Speichern unter".

Grüße
Sebastian

http://www.filmeo.de - Kostenlose Filme & Serien finden
Sebastian ist offline   Mit Zitat antworten An Facebook senden
Alt 17.01.2009, 12:26   #3 (permalink)
Erfahrener Benutzer
 

RSP-Fan eine Nachricht über ICQ schicken RSP-Fan eine Nachricht über Skype™ schicken
Standard

Ja, ich hab Irrlicht eh schon.

Aber wie mach ich das jetzt? Ich hab Irrlicht zwar kenn mich aber nicht aus.

Welche Formate unterstützt Irrlicht eigentlich?
RSP-Fan ist offline   Mit Zitat antworten An Facebook senden
Alt 17.01.2009, 12:45   #4 (permalink)
Pixelschieber
Benutzerbild von Sebastian
 

Standard

Hallo,
erstmal musst du Irrlicht installieren. Dies kannst du mit diesem Tutorial machen:
http://gamux.de/showthread.php?t=143

Danach wird das hier wohl das sein, was du brauchst:
http://irrlicht.sourceforge.net/docu/example004.html

Grüße
Sebastian

http://www.filmeo.de - Kostenlose Filme & Serien finden
Sebastian ist offline   Mit Zitat antworten An Facebook senden
Alt 17.01.2009, 12:52   #5 (permalink)
Erfahrener Benutzer
 

RSP-Fan eine Nachricht über ICQ schicken RSP-Fan eine Nachricht über Skype™ schicken
Standard

aha, also ist dev c++ das gescheiteste?
RSP-Fan ist offline   Mit Zitat antworten An Facebook senden
Alt 17.01.2009, 13:04   #6 (permalink)
Pixelschieber
Benutzerbild von Sebastian
 

Standard

Hallo,
das ist eigentlich komplett egal. Ich persönlichlich benutze es immernoch gerne. Manche schwören aber auch auf Code::Blocks. Das ist bei kleineren Projekten einfach nur Ansichtssache

Grüße
Sebastian

http://www.filmeo.de - Kostenlose Filme & Serien finden
Sebastian ist offline   Mit Zitat antworten An Facebook senden
Alt 17.01.2009, 13:06   #7 (permalink)
Erfahrener Benutzer
 

RSP-Fan eine Nachricht über ICQ schicken RSP-Fan eine Nachricht über Skype™ schicken
Standard

Danke!

Ich seh da nochwas:

Code:
        scene::ISceneNode * node = smgr->addSphereSceneNode();
        if (node)
        {
                node->setPosition(core::vector3df(0,0,30));
                node->setMaterialTexture(0, driver->getTexture("../../media/wall.bmp"));
                node->setMaterialFlag(video::EMF_LIGHTING, false);
        }
Muss ich da die textur backen, oder wie?
RSP-Fan ist offline   Mit Zitat antworten An Facebook senden
Alt 17.01.2009, 13:47   #8 (permalink)
Pixelschieber
Benutzerbild von Sebastian
 

Standard

Das ist nur eine Textur mit der das Objekt ein bisschen verschönert wird. Ein richtiges Objekt findet man so ein:
cpp Code:
  1. IAnimatedMesh* mesh = smgr->getMesh("../../media/deinedatei.md2");
  2. IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );

http://www.filmeo.de - Kostenlose Filme & Serien finden
Sebastian ist offline   Mit Zitat antworten An Facebook senden
Alt 17.01.2009, 14:04   #9 (permalink)
Erfahrener Benutzer
 

RSP-Fan eine Nachricht über ICQ schicken RSP-Fan eine Nachricht über Skype™ schicken
Standard

danke, das hab ich auch probiert aber irgendwie geht das nicht, ich hab bei wiki geschaut, was irrlicht unterstützt, ud auch alle möglichen exportiert, manchmal bleibt er stecken, bei COLLADA sagt er, dass es zu goß ist und bei x unknow header object oder so!

Miein Code:

Code:
#ifdef _MSC_VER
// We'll also define this to stop MSVC complaining about sprintf().
#define _CRT_SECURE_NO_WARNINGS
#pragma comment(lib, "Irrlicht.lib")
#endif

#include <irrlicht.h>
#include <iostream>

using namespace irr;
class MyEventReceiver : public IEventReceiver
{
public:
        // This is the one method that we have to implement
        virtual bool OnEvent(const SEvent& event)
        {
                // Remember whether each key is down or up
                if (event.EventType == irr::EET_KEY_INPUT_EVENT)
                        KeyIsDown[event.KeyInput.Key] = event.KeyInput.PressedDown;

                return false;
        }

        // This is used to check whether a key is being held down
        virtual bool IsKeyDown(EKEY_CODE keyCode) const
        {
                return KeyIsDown[keyCode];
        }
        
        MyEventReceiver()
        {
                for (u32 i=0; i<KEY_KEY_CODES_COUNT; ++i)
                        KeyIsDown[i] = false;
        }

private:
        // We use this array to store the current state of each key
        bool KeyIsDown[KEY_KEY_CODES_COUNT];
};
int main()
{
        // let user select driver type

        video::E_DRIVER_TYPE driverType = video::EDT_DIRECT3D9;

        printf("Please select the driver you want for this example:\n"\
                " (a) Direct3D 9.0c\n (b) Direct3D 8.1\n (c) OpenGL 1.5\n"\
                " (d) Software Renderer\n (e) Burning's Software Renderer\n"\
                " (f) NullDevice\n (otherKey) exit\n\n");

        char i;
        std::cin >> i;

        switch(i)
        {
                case 'a': driverType = video::EDT_DIRECT3D9;break;
                case 'b': driverType = video::EDT_DIRECT3D8;break;
                case 'c': driverType = video::EDT_OPENGL;   break;
                case 'd': driverType = video::EDT_SOFTWARE; break;
                case 'e': driverType = video::EDT_BURNINGSVIDEO;break;
                case 'f': driverType = video::EDT_NULL;     break;
                default: return 0;
        }       

        // create device
        MyEventReceiver receiver;

        IrrlichtDevice* device = createDevice(driverType,
                        core::dimension2d<s32>(640, 480), 16, false, false, false, &receiver);

        if (device == 0)
                return 1; // could not create selected driver.

        video::IVideoDriver* driver = device->getVideoDriver();
        scene::ISceneManager* smgr = device->getSceneManager();
        scene::ISceneNode * node = smgr->addSphereSceneNode();
        if (node)
        {
                node->setPosition(core::vector3df(0,0,30));
                node->setMaterialTexture(0, driver->getTexture("wall.bmp"));
                node->setMaterialFlag(video::EMF_LIGHTING, false);
        }
        scene::ISceneNode* n = smgr->addCubeSceneNode();

        if (n)
        {
                n->setMaterialTexture(0, driver->getTexture("t351sml.jpg"));
                n->setMaterialFlag(video::EMF_LIGHTING, false);
                scene::ISceneNodeAnimator* anim =
                        smgr->createFlyCircleAnimator(core::vector3df(0,0,30), 20.0f);
                if (anim)
                {
                        n->addAnimator(anim);
                        anim->drop();
                }
        }
        scene::IAnimatedMesh* mesh = smgr->getMesh("Noppe4_objekt.obj");
               IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );

        if (anms)
        {
                scene::ISceneNodeAnimator* anim =
                        smgr->createFlyStraightAnimator(core::vector3df(100,0,60),
                        core::vector3df(-100,0,60), 3500, true);
                if (anim)
                {
                        anms->addAnimator(anim);
                        anim->drop();
                }
                anms->setMaterialFlag(video::EMF_LIGHTING, false);

                anms->setFrameLoop(0, 14);
                anms->setAnimationSpeed(15);
//              anms->setMD2Animation(scene::EMAT_RUN);

                anms->setScale(core::vector3df(2.f,2.f,2.f));
                anms->setRotation(core::vector3df(0,-90,0));
//              anms->setMaterialTexture(0, driver->getTexture("../../media/sydney.bmp"));

        }
        smgr->addCameraSceneNodeFPS(0, 100.0f, .1f);
        device->getCursorControl()->setVisible(false);
        device->getGUIEnvironment()->addImage(
                driver->getTexture("irrlichtlogoalpha2.tga"),
                core::position2d<s32>(10,20));

        gui::IGUIStaticText* diagnostics = device->getGUIEnvironment()->addStaticText(
                L"", core::rect<s32>(10, 10, 400, 20));
        diagnostics->setOverrideColor(video::SColor(255, 255, 255, 0));
        int lastFPS = -1;

        // In order to do framerate independent movement, we have to know
        // how long it was since the last frame
        u32 then = device->getTimer()->getTime();

        // This is the movemen speed in units per second.
        const f32 MOVEMENT_SPEED = 5.f;

        while(device->run())
        {
                // Work out a frame delta time.
                const u32 now = device->getTimer()->getTime();
                const f32 frameDeltaTime = (f32)(now - then) / 1000.f; // Time in seconds
                then = now;
                core::vector3df nodePosition = node->getPosition();

                if(receiver.IsKeyDown(irr::KEY_KEY_W))
                        nodePosition.Y += MOVEMENT_SPEED * frameDeltaTime;
                else if(receiver.IsKeyDown(irr::KEY_KEY_S))
                        nodePosition.Y -= MOVEMENT_SPEED * frameDeltaTime;

                if(receiver.IsKeyDown(irr::KEY_KEY_A))
                        nodePosition.X -= MOVEMENT_SPEED * frameDeltaTime;
                else if(receiver.IsKeyDown(irr::KEY_KEY_D))
                        nodePosition.X += MOVEMENT_SPEED * frameDeltaTime;

                node->setPosition(nodePosition);

                driver->beginScene(true, true, video::SColor(255,113,113,133));

                smgr->drawAll(); // draw the 3d scene
                device->getGUIEnvironment()->drawAll(); // draw the gui environment (the logo)

                driver->endScene();

                int fps = driver->getFPS();

                if (lastFPS != fps)
                {
                        core::stringw tmp(L"Movement Example - Irrlicht Engine [");
                        tmp += driver->getName();
                        tmp += L"] fps: ";
                        tmp += fps;

                        device->setWindowCaption(tmp.c_str());
                        lastFPS = fps;
                }
        }
        device->drop();
        
        return 0;
}
RSP-Fan ist offline   Mit Zitat antworten An Facebook senden
Alt 17.01.2009, 14:14   #10 (permalink)
Erfahrener Benutzer
 

RSP-Fan eine Nachricht über ICQ schicken RSP-Fan eine Nachricht über Skype™ schicken
Standard

Das wird ausgegeben:

K:\pagma\main.cpp In function `int main()':
98 K:\pagma\main.cpp `IAnimatedMeshSceneNode' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
100 K:\pagma\main.cpp `anms' undeclared (first use this function)
K:\pagma\Makefile.win [Build Error] [main.o] Error 1
RSP-Fan ist offline   Mit Zitat antworten An Facebook senden
Antwort

Themen-Optionen
Ansicht

Forumregeln
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Wie kann man eine map in c++ einbinden leridan Game-/Leveldesign 6 03.11.2008 18:45


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:23 Uhr.


Style Copyright by Wrestling Forum
Content Relevant URLs by vBSEO 3.3.0