老师们好。
测试用代码创建的剪切立方体似乎没起作用,还需要手工在剪切立方体的右键菜单中点下应用才行。
手工应用剪切立方体能用代码实现不?另外 IViewClipObjectPtr的SetPreserveUp(bool flag)这个函数是什么意思?
谢谢老师。
管工:您好!
管华明 said:手工应用剪切立方体能用代码实现不?
请增加Step 5试一下:
//Step 5: Apply section clip to view ViewInfoP pViewInfo = pViewport->GetViewInfoP(); DynamicViewSettingsR dvSetting = pViewInfo->GetDynamicViewSettingsR(); dvSetting.SetClipBoundElementId(clipElement.GetElementId()); pViewInfo->SetDynamicViewSettings(dvSetting); pViewInfo->GetGeomInfoR().m_viewFlags.noClipVolume = false; pViewInfo->GetGeomInfoR().m_viewFlags.constructs = true; pViewport->SynchWithViewInfo(true, false);
管华明 said: IViewClipObjectPtr的SetPreserveUp(bool flag)这个函数是什么意思?
这个Preserve Up我推测应该是Preserve World Up(保持世界坐标系冲上)的缩写。当我们用高级的三维鼠标时,该项才会起作用。它能让我们在用三维鼠标旋转模型时整个模型的Z坐标始终冲上,而不至于把视图方向转得乱七八糟的。
比较高级的三维鼠标品牌有3Dconnexion SpaceMouse。京东上有两款,分别报价2080和3680元,都快顶上一台低阶电脑了。多年前Jerry Flyn来中国讲授Rendering and Animation时见他用过。
Answer Verified By: 管华明
加上符老师给的这段代码,剪切立方体起作用了,非常感谢!