Javascript 将视野值转换为CSS3D透视值
如果我想要一个60°视场的相机,那么如何计算CSS3D透视值Javascript 将视野值转换为CSS3D透视值,javascript,html,css,Javascript,Html,Css,如果我想要一个60°视场的相机,那么如何计算CSS3D透视值 perspective: ?; perspective-origin: center center; 我找到了一个关于如何从透视值计算投影矩阵的描述,但我仍然不太理解: 因此,如果我有一个给定的视野,并且我知道元素的offsetWidth/offsetHeight,那么我应该如何计算所需的透视值 perspective: ?; perspective-origin: center center; 近面和远面在哪里 几年前我问过,得
perspective: ?;
perspective-origin: center center;
我找到了一个关于如何从透视值计算投影矩阵的描述,但我仍然不太理解:
因此,如果我有一个给定的视野,并且我知道元素的offsetWidth/offsetHeight,那么我应该如何计算所需的透视值
perspective: ?;
perspective-origin: center center;
近面和远面在哪里 几年前我问过,得到了下面的回答。链接的文章已经改变了,所以我引用这篇文章,因为它不再存在于文章中(但可能还有其他有用的信息)
如果我读对了,你有一个金字塔,它的底部在远离观察者的[perspective px]处。因此,如果您想要60°fov,从中心到角有一个30°三角形,您需要找到相邻边的长度:
Math.pow( w/2*w/2 + h/2*h/2, 0.5 ) / Math.tan( 30 * Math.PI / 180 )
我想;)它为1000x500
视图生成了968
的透视图,这似乎与随机使用-webkit透视图差不多
工作草案作了如下解释:
透视图()
指定透视投影矩阵。这个矩阵将一个观察立方体映射到一个金字塔上,该金字塔的底部离目标无限远
查看器,其峰值表示查看器的位置。可视的
区域是由视口的四条边(区域)限定的区域
用于在之间呈现网页的浏览器窗口的一部分
观察者的位置和距离目标无限远的点
观众)。作为函数参数给定的深度表示
z=0平面与查看器的距离。较低的值表示
金字塔更加扁平,因此透视效果更加明显
效果。该值以像素为单位,因此值1000表示
适度的缩短和200的值会产生极端的
数量该矩阵由一个单位矩阵开始计算,然后
将第3行第4列的值替换为-1/深度。这个
深度的值必须大于零,否则函数无效
无效