我要发帖 回复

正式会员

12

主题

97

积分

0

专家分

:

私信
发表时间 : 2007-11-16 20:34:31 | 浏览 : 2076    评论 : 3
我才学vp不久 最近想在vp中动态画线,就是物体跑到那里线画到那里,但是始终画不出来,希望大家帮助一下看看下面程序怎么回事?
#ifndef _HVP_CUSTOM_H
#define _HVP_CUSTOM_H
#include <vrGeometry.h>
#include <vrState.h>
#include <vpObject.h>
#include "vuVector.h"
class HvpCustomObject:public vuBase
{
public:
        HvpCustomObject(char* ObjectName);
        virtual ~HvpCustomObject(void);
public:
        BOOL AddScene(char * ObjectName);
        void AddPoint(float x,float y,float z);
private:
        vsGeometry* QuadGeom;
        vrGeometry *m_vrGeometry;
    vrState *m_vrState;
        vuVector<vuVec3<float> > m_vec; /* 保存先前的顶点数据*/
        int Num_seg; /* 顶点数目*/
        vuVec4<float>* QuadColor;/* 保存颜色*/
        vuVec3<float>* QuadVertices;/* 定点*/
       

};
#endif
上面是头文件
下面是实现文件:
#include "StdAfx.h"
#include ".\hvpcustomobject.h"
#include <vrGeometry.h>
#include <vrState.h>
#include <vpObject.h>
#include <vpScene.h>
#include <vpTransform.h>
#include "vsgr.h"
#include "vrLight.h"

HvpCustomObject::HvpCustomObject(char* ObjectName )
{   
        m_vrGeometry = NULL;      
        m_vrState = NULL;
    Num_seg=0;
}

HvpCustomObject::~HvpCustomObject(void)
{
    m_vrGeometry->unref();
        QuadColor=NULL;
        QuadVertices=NULL;
        m_vrState->unref();
        QuadGeom->unref();

}
BOOL HvpCustomObject::AddScene(char* SceneName)
{ if(SceneName != NULL)
{  vpScene* Scene = (vpScene*)vpScene::find(SceneName);
         if(Scene!= NULL)
        {
        Scene->addChild(QuadGeom);
        return TRUE;
        }
        return false;
}
return false;
};

void HvpCustomObject::AddPoint(float x,float y,float z)
                                                         
{
        Num_seg++;
         if(Num_seg==1) /*第一次就初始化*/
        {
        m_vrState = new vrState();
        vrLight::Element LightElement;
        LightElement.m_enable = false;
        m_vrState->setElement(vrLight::Element::Id, &LightElement);
        m_vrGeometry = new vrGeometry();                  /* 2.物体的绘制,由vrGeometry类完成 */
        QuadVertices=vuAllocArray<vuVec3<float> >::malloc(Num_seg);
        QuadColor=vuAllocArray<vuVec4<float> >::malloc(1);
        QuadColor->set(1,1,0,1);  
        vuVec3<float> pos(x,y,z);
        QuadVertices[Num_seg-1].set(x,y,z);                              /*颜色设置)*/       
        m_vec.push_back(pos);
        QuadGeom = new vsGeometry();
        m_vrGeometry->setColors(QuadColor,vrGeometry::BINDING_OVERALL);
        m_vrGeometry->setPrimitive(vrGeometry::PRIMITIVE_LINE_STRIP);
        m_vrGeometry->setNumPrimitives(Num_seg);
        m_vrGeometry->setVertices(QuadVertices);         
        QuadGeom->setGeometryBase(m_vrGeometry);
        QuadGeom->setState(m_vrState);    /* 3.用vsGeometry包装veGeometry */
        }
        else  /* 添加数据*/
        {
       
        BOOL flag=m_vrGeometry->empty_vertex(); /*??????问题好像在这里但是不知道怎么该*/
        QuadVertices=vuAllocArray<vuVec3<float> >::malloc(Num_seg);
        stl::copy(m_vec.begin(),m_vec.end(),QuadVertices);
        vuVec3<float> pos(x,y,z);
        QuadVertices[Num_seg-1].set(x,y,z);
        m_vec.push_back(pos);

        m_vrGeometry->setColors(QuadColor,vrGeometry::BINDING_OVERALL);
        m_vrGeometry->setPrimitive(vrGeometry::PRIMITIVE_LINE_STRIP);
        m_vrGeometry->setNumPrimitives(Num_seg);
        m_vrGeometry->setVertices(QuadVertices);       /* 重新设置顶点 */

        }
       
       
       

}


在vp主循环里初始化:
                 vuVec3<double> pos;
                m_tank->getPosition( &pos[0], &pos[1], &pos[2] );
                m_custom->AddPoint(pos[0],pos[1],pos[2]);
            m_custom->AddScene("myScene");


loop里:
                     vuVec3<double> pos;
                m_tank->getPosition( &pos[0], &pos[1], &pos[2] );
                m_tank->setPosition(pos[0],pos[1]+1,pos[2]);/* 移动目标*/
                m_custom->AddPoint(pos[0],pos[1]+1,pos[2]); /*添加顶点数据*/
才学vegaprime不久,望高手指点一下怎么运行不出来,感谢万分!!!

最近VR访客

tan_dunming 评论于2007-11-16 22:32:35
我没哟做这方面的经验,但是我觉得你应该好好研究一下VP 安装文件下的 \resources\samples中相关的动态添加物体绘制的例程,那是最好的参考资料了,说不定有类似的资料。
追求卓越
tan_dunming 评论于2007-11-16 22:34:00
会不会是坐标系出了问题?滑到别的地方了?还是说场景没有添加成功/就是说添加物体的方法有问题没有?
关注!
追求卓越
menghewei 评论于2008-9-9 12:04:02

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-9-23 10:07 AM

返回顶部