Tips for ACIS and HOOPS

ACIS

1、判断一个Entity是否有效
 
 bool isValidEntity(ENTITY* pEntity)
 {
   insanity_list *insane_list = NULL;
   outcome result = api_check_entity(pEntity, insane_list);
   return result.ok();
 }

2、获取一个体的boundbox
 SPABox getBoundBox(BODY* pBody)
 {
   SPAbox* pBoxOld = pBody->bound();
   SPAbox box = *pBoxOld;
   TRANSFORM* tram =  pBody->transform();//获取变换矩阵
   if(0 != tram)                         //变换矩阵可能为0
   {
 SPAtransf transBox = tram->transform(); //施加到boundbox上
 box = (*pBoxOld) * transBox;
  }
  return box;
 }

 

HOOPS

 

1、设置面为透明
 HC_Set_Color("faces = (transmission = (r=0.2 g=0.2 b=0.2))");

2、最后渲染(渲染在最顶层)
 HC_Set_Rendering_Options("depth range = ( 0, 0)");
 
3、让一个面的前后面显示相同的效果
 HC_Set_Heuristics("no backplane cull");     //显示后面
 HC_Set_Color("face=(r=0.8 g=0.8 b=0.8), back = (r=0.8 g=0.8 b=0.8)"); //相同颜色
 HC_Set_Visibility("Lighting=off"); //关掉灯光效果

 

segment下的用户信息

HC_Set_User_Options

HC_Set_User_Index

可以用来设置segment下的用户自定义信息,HC_Set_User_Options可以保存字符串信息,HC_Set_User_Index 可以保存void*信息,即对象的指针。

HC_Show_One_(Net_)User_Option

HC_Show_One_(Net_)User_Index

获取用户自定义的信息,使用以上两个即可。Net版本当获取不到用户信息时,没有错误提示信息。

如:

 long pData = 0;
 HC_KEY keyOwner = HC_KShow_Owner_By_Key(key);
 HC_Open_Segment_By_Key(keyOwner);


 int nResult = HC_Show_One_Net_User_Index(MESHINDEX_GRIDBOX, &pData);

 HC_Close_Segment();
 if(nResult && pData)
 {

....

}

------------------------------------

ACIS和HOOPS 动画

HOOPS可以用来显示ACIS实体,在HOOPS中的Segment中的Geometry可以看作是ACIS数据实体的一种映射。

如我们在ACIS中建立了一个球体api_make_sphere(1.0,body);那么我们就可以在HOOPS中显示这个实体。虽然HOOPS只是操作Geometry,但我在研究运动(HBhvAnimation)时发现,Geometry在运动时,其AICS实体似乎也做相应的运动,这倒是让人费解。

在HOOPS中如何让一个在(1,0,0)的球体绕与过(1,0,0)与(1,1,0)的轴旋转呢?

问题:HBhvInterpolatorAxisRotate只提供了一个SetAxis()函数

思路:  1、使用ACIS的translate_transf()将球体的ACIS数据实体左移(-1,0,0),不能用HOOPS中的Translate_Object()若使用,则模型视图中心就又回到了原来的地方;

        2、使用HC_Set_Modelling_Matrix()将球体的模型视图中心移动到点(1,0,0)(模型视图中心默认是在(0,0,0))。那么这时球体也相应的移动到(2,0,0);

         3、重新渲染球体HA_ReRender_Entity();

经过这些步骤就可以让该球体绕它的中心轴旋转了。

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值