creator3.0 camera怎么截图

TestCamera.zip (1.4 MB)
这是测试demo,这里再发一下,为了给其他开发者也可以看到,除了主相机,其他全部设置成为DONT_CLEAR和DEPTH_ONLY都无效

求官方大大,尽快能回复一下,谢谢

好的,我们测试验证下

ok,辛苦

测试例里面测试看是正常的,点击按钮切换 RT 内容到 Sprite 的时候,因为 RT 绘制的尺寸大,绘制了图片内容以及一部分背景内容, Sprite 的 Size Mode 设置的是 TRIMMED,会自动适应为 RT 的尺寸,遮挡了后面的内容。

如果希望 Sprite 的尺寸固定,那需要设置 Size Mode 为 Custom,然后脚本里动态设置 Sprite 尺寸的处理需要删掉。

如果希望 RT 只绘制图片内容,那需要调整 Camera 的位置及可视范围,保证只匹配目标图片内容。

如果希望 RT 保持目前的尺寸,但是不希望有背景颜色,那就调整 Camera 的 ClearFlags 为 SOLID_COLOR,并调整 SOLID_COLOR 的 alpha 值为 0.

1、如果是DONT_CLEAR和DEPTH_ONLY的话,为什么会把背景内容绘制上呢?背景是第一个摄像机(“Camera”)填充的,和其他两个摄像机应该不发生关系的;
2、我这里还另外一个测试方向是,多个摄像机应该都会绘制到RT上的,现在只显示了一个摄像机下的(即时不考虑黑色背景);你给的第三个如果解决方案,也不没有解决多个摄像机的问题啊。
@cary

TestCamera.zip (1.8 MB)
继续上传demo,把多余的东西都去除一下,希望你能get到问题所在,现在是如果分别只开启一个捕捉相机,都可以正常截出对应的内容,但是,如果两个同时开启,就只能截到后面渲染的捕捉内容。其次,clearFlags问题也才暴露出来。

哦,抱歉。以为你说的是遮挡的问题,RT 在目前的版本取消了 ColorAttachment 的序列化和自定义编辑,会默认设置为 CLEAR,所以每次绘制都会固定的更新颜色值进行清空,如果需要多个相机进行绘制,可以在 reset 的时候进行自定义,以你 demo 中的代码为例,将 loadOP 设置为 LOAD。

const colorAttachment = new gfx.ColorAttachment();
colorAttachment.loadOp = gfx.LoadOp.LOAD;
colorAttachment.endLayout = gfx.TextureLayout.SHADER_READONLY_OPTIMAL;
const depthStencilAttachment = new gfx.DepthStencilAttachment();
const passInfo = new gfx.RenderPassInfo([colorAttachment], depthStencilAttachment);
rt.reset({width: size.width, height: size.height, passInfo: passInfo});

引擎层面会考虑下对于离屏的 RT 关联相机的设置进行动态更新,方便用户使用。

真相在此了

这些方法都是要预先放置好摄像机吧,太局限了
怎么能随时随地能截指定结点
2.1可以实现的,封装成一个api,传个区域坐标就可以了,随时截屏贼方便,不知道3.0怎么弄了,焦头烂额啊

对于新手真的相当不友好

3赞

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。

所以讨论了半天还没一个结论吗?

所以看了半天讨论,也没看到解决方案标识那条吗?

3.5.2你自己试下,截图是可以的,但是如果想要判断像素,应该是不可以的

我是自己写的系统的截图方案,然后ts端调用,勉强能用,我记得2.0的时候截图很方便,3.0后我也懵逼了。:rofl:

你好,我使用3.4.0版本和3.6.1版本用同样的方法,截图出来的图像是一个镜像的,为什么呀,期待尽快回复

截图过后 图片镜像的问题解决的吗 版本是3.6.2

大概记得camera上有个属性,改成负的就可以把镜像转过来,可以尝试一下,很久没做这个了,给不了很确定的方案

1赞