Debut de modeleur 3d

Description

c'est un debut seulement mais la structure y est :
j'utilise Qt et QGLviewer (un QGLWidget amelioré) pour afficher

Features :
-creation d'un cube à partir d'un fichier
-fichier(qui n'est plus Xml mais un melange xml/binaire (le xml est plus pratique pour deboguer mais le binaire est plus facile à gerer)
-calcul de normal
-node de transformation(Scale,translation,rotation) mais la combinaison scale+rotation ne donne pas le bon resultat
-label 3D / texte 2D
-Structure de la scene en arbre

Source / Exemple :


/*!
CNode Definition
!*/

//traverse Dom to load
bool CNode::Load(QDomNode node,CNode* caller)
{
    QDomNode child;
    setName( node.toElement().attribute("name","defaultCNode"));

    for(int i=0;i<node.childNodes().length();i++)
    {
        child = node.childNodes().item(i);

        logstr << "Node::Load->" << child.nodeName() << "(" << name << ")" << endl;

        CNode* ptr = caller->Spawn(child.nodeName()); //new child type nodename
        if(ptr)
            ptr->Load(child,ptr); //child load event(new child,glinit)
        else
            logstr << "Node::Error->" << child.nodeName() << "(" << name << ")" << endl;
    }
}

CNode* CNode::Spawn(QString type)
{
    logstr << "No Spawn for:" << type;
    return 0;
}

// add a child to our custody
void CNode::AddChild( CNode* pNode )
{
    Children.push_back(pNode);
}

// update our scene node //scene node traversal //bounding box,animation //done once per frame
bool CNode::Update()
{

    // loop through the list and update the children
    for( std::list<CNode*>::iterator i = Children.begin();
            i != Children.end(); i++ )
    {

        (*i)->Update();
    }

}

Conclusion :


il faut que je fasse les premiers outils de modelisation et l'application de texture maintenant
j'essaye de ne plus utiliser QT petit à petit

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.