cocos-docs icon indicating copy to clipboard operation
cocos-docs copied to clipboard

Canvas 组件参考:语句费解,关于相机对齐的疑问

Open smalllong opened this issue 2 years ago • 3 comments

URL : https://github.com/cocos-creator/creator-docs/blob/master/zh/ui-system/components/editor/canvas.md

Canvas 本身和相机并无关系,其更主要的作用是上文叙述的屏幕适配,所以 Canvas 的渲染只取决于和其节点 layer 对应的 camera。所以可以通过控制 camera 的属性来决定 Canvas 下节点的渲染效果。 这句话有点令人费解,建议可以改成

Canvas 本身并不是一个相机,不会自动渲染展示子节点,而是只展示和其关联的相机的取景,所以可以通过控制关联 camera 的属性来决定 Canvas 下节点的渲染效果。其本身更主要的作用是上文叙述的屏幕适配,主要通过勾选AlignCanvasWithScreen来实现。

另外疑问是如果勾选了AlignCanvasWithScreen好像就没法把相机拉远了是吗?3d透视效果太明显了,我想保持AlignCanvasWithScreen但同时把相机拉远来减小透视效果,这个怎么做到?

smalllong avatar Jan 18 '22 16:01 smalllong

URL : https://github.com/cocos-creator/creator-docs/blob/master/zh/ui-system/components/editor/canvas.md

Canvas 本身并不是一个相机,不会自动渲染展示子节点,而是只展示和其关联的相机的取景,所以可以通过控制关联 camera 的属性来决定 Canvas 下节点的渲染效果。

这句话没问题。

其本身更主要的作用是上文叙述的屏幕适配,主要通过勾选AlignCanvasWithScreen来实现。

这个的后半句有点问题,屏幕适配是 canvas 内部的处理来确保对齐的,而 AlignCanvasWithScreen 则是控制 canvas 关联的相机来让相机的取景和 canvas 对齐,以便展示 canvas 中的全部内容。

另外疑问是如果勾选了AlignCanvasWithScreen好像就没法把相机拉远了是吗?3d透视效果太明显了,我想保持AlignCanvasWithScreen但同时把相机拉远来减小透视效果,这个怎么做到?

是的, AlignCanvasWithScreen 会将 相机与 canvas 对齐,你描述的这个场景是想 3d 和 2d 共用同一个相机吗?建议分开相机通过 layer 来控制哦。

LinYunMo avatar Jan 20 '22 02:01 LinYunMo

@LinYunMo 谢谢回复。也就是说即便camera没有和canvas对齐,canvas还是会影响自身和下面节点的布局来适配屏幕大小吧。 我本来是想3d和2d用同一个camera的,因为我以为这样3d就也可以适配屏幕了。但是如果不建议这样做的话,3d元素一般怎么做屏幕适配呢?有相关教程吗

smalllong avatar Jan 21 '22 13:01 smalllong

一般来说有屏幕适配需求的大都是 UI,因为其最终表现和交互是基于屏幕空间下的,所以才需要进行屏幕适配。 而 3D 元素一般的存在都是在 “游戏世界” 中的,包括交互和认知也都是基于 世界坐标下的,所以和屏幕的关系不大。3D 元素的显示和 camera 直接相关,相机看到的元素大小即为 屏幕上绘制的大小,所以其实是个相对的大小,也就和屏幕关系不大。 不知道你的需求是什么呢?通过设置相机的 fov 等参数能够改变 3D 物体在相机中的效果,不知是否可以满足需求?

LinYunMo avatar Jan 26 '22 10:01 LinYunMo

问题已解决,关闭。

MrKylinGithub avatar Jun 17 '23 10:06 MrKylinGithub