三维场景中的精度问题

三维场景中的数据类型一般是使用float型,但是在许多情况下,double也是很有必要的。

我们知道32位float是3.4*(10^(-38)~10^(38)),double类型的范围是1.7*(10^(-308)~10^(308)),这个float型(其中小数有24位)它可以描述从100多公里精确到0.1毫米之间范围的东东(大概是这个范围),如果描述的东西比这个跨度还大的话,那就不够用了,比如说是要描述的内容跨度从地球上空1000多公里处到地表上一块很小的石头,float型的精度显然就不够了。
解决的办法 :
1.可以统一坐标统一归到一个物体坐标系中,比如要描述的物体的坐标都是向下面的这样:

-100557.5107,167569961.3831,-2.2000
-100559.9442,167569968.0690,-2.2000
-100559.9442,167569968.0690,1.6000
-100557.5107,167569961.3831,1.6000

那么就可以将模型坐标都减去-100550.00,167569960.00,0.0000,就是将物体的局部坐标系原点放在这,这样大家的坐标都变小了,描述的物体就比较精确了,不会有那种抖动现象了。
2.使用double型,但问题是很多显卡不支持,这样会导致你的程序在差一点的机子上就跑,还是有那种抖动现象,所以还是推荐第一种方法,自定义物体坐标系原点。

 

这是目前我对三维场景中精度的理解,希望能和大家一起继续讨论...

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值