原帖地址:https://answers.flexsim.com/questions/44223/is-there-a-way-to-maintain-object-size-regardless.html原作者:Enrique Elizaga 和phil.bobo
Enrique Elizaga:
你好, 我想在视图缩放中保持保持一个对象大小(总是2 x 2 x 2)固定。这可能实现吗?
您可以通过添加以下代码使用自定义绘制触发器来获得此功能: double size = 5.0; int shapeIndex =getshapeindex("fs3d\\Processor\\Processor.3ds"); double scaleFactor = size *viewpointradius(view).value / 100.0; if (viewprojectiontype(view).value == 1)// orthographic projection scaleFactor= size * 10.0 / viewmagnification(view).value; fglScale(scaleFactor, scaleFactor,scaleFactor); drawobject(view, shapeIndex, 0);
该示例代码绘制了一个处理器形状。您可以调整getshapeindex()的调用来绘制不同的形状。例如,使用“fs3d \\ General \\ Plane.3ds”绘制一个平面。 您可以调整大小变量以使其变大或变小。 附件是一个示例模型,展示了这一点。
它好像将三维物体(球体)的基准点画在实体的中心(比如红色的)。我尝试了中心基准点的选择,但它不会起作用,它总是在一个角上。 添加fglTranslate()调用来翻译图形的位置: double size = 5.0; int shapeIndex =getshapeindex("fs3d\\General\\Sphere.3ds"); double scaleFactor =size*viewpointradius(view).value/100.0; if (viewprojectiontype(view).value == 1) scaleFactor= size*10.0/viewmagnification(view).value; fglTranslate(0.5, 0.5, 0.5); fglScale(scaleFactor, scaleFactor, scaleFactor); fglTranslate(-0.5, -0.5, -0.5); drawobject(view, shapeIndex, 0); 或者在三维建模程序(如AC3D)中修改形状,使形状以原点为中心。一般的球体形状的位置是在它的原点,而不是它的中心。
|