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
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.