查看: 1|回复: 1

【官网翻译】有没有办法在视图缩放的时候,保持对象的大小固定不变?

[复制链接]

主题

0

回帖

783

积分

中级会员

积分
783
发表于 2017-11-5 19:53:24 | 显示全部楼层 |阅读模式
[font=黑体]原帖地址[/font][font=宋体]:[/font][url=https://answers.flexsim.com/questions/44223/is-there-a-way-to-maintain-object-size-regardless.html]https://answers.flexsim.com/questions/44223/is-there-a-way-to-maintain-object-size-regardless.html[/url][font=宋体]原作者:[/font][color=red][url=https://answers.flexsim.com/users/583/enrique.e.html]Enrique Elizaga[/url][/color] [font=宋体]和[/font][url=https://answers.flexsim.com/users/206/phil.b.html]phil.bobo[/url]

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

主题

0

回帖

324

积分

注册会员

积分
324
发表于 2022-3-4 19:34:41 | 显示全部楼层
谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|京ICP备14043114号-2

在本版发帖
关注公众号
QQ客服返回顶部