- 使用webgl渲染相机帧同时运行tensorflow模型,webgl画布会卡住
使用webgl渲染相机帧同时运行tensorflow模型,画布会卡住,代码运行正常,无报错
2020-03-17 - ar小程序hide后threejs模型位置发生变化怎么办?
使用官方ar示例代码发现隐藏小程序再打开模型的位置发生变化 [图片][图片] 在onshow中排查发现模型的世界坐标并没有变化,变化的是世界坐标系的原点,该如何解决?[图片] 根据官方文档,我理解的意思是隐藏的时候相机会关闭,随后再次打开相机时改变了坐标原点。那么有什么方案可以解决模型位置改变的问题?
2022-09-22 - VKSession中模型部分纹理丢失,显示黑色
期望为右侧纹理,结果为左侧黑色代码是在官方的vksession代码的基础上,修复gltf模型加载纹理问题,但是发现部分纹理会显示黑色(部分模型纹理可正常),https://file.ljcdn.com/bim-oss/20220304/1646383982124scene100.gltf;使用该模型(很普通的平面+普通纹理)很容易复现纹理分辨率是要求的2的次幂*2的次幂问题大致是 renderGL(frame){} 函数的问题,即为摄像头纹理绘制到canvas 导致模型纹理丢失其实和gltf无关,和textureloader也无关,纹理其实已经正常加载了,但是renderGL会将该纹理冲掉 [图片] [图片]
2022-03-04 - 小程序下WebGL截图
最近做了关于小程序下WebGL截图的项目,遇到一些坑,记录下。 安卓切换页面后返回,再一次获取像素为空 IOS偶尔获取到的为空白图像 获取到的数据绘制出来后上下颠倒 翻THREE.JS的代码,发现正确的截图方法 https://github.com/mrdoob/three.js/blob/master/src/renderers/WebGLRenderer.js#L1903 [代码]if ( _gl.checkFramebufferStatus( _gl.FRAMEBUFFER ) === _gl.FRAMEBUFFER_COMPLETE ) { // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604) if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) { _gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer ); } } else { console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' ); } [代码] 所以解决方法 [代码]// 在渲染循环里检测checkFramebufferStatus状态,完成后再读取像素 const render = () => { if (this.disposing) return requestAnimationFrame(render); demo.update() renderer.render(scene, camera); if (this.screenshotResolve) { // @ts-ignore 参考 Threejs WebGLRenderer.readRenderTargetPixels if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE) { // @ts-ignore gl.readPixels(0, 0, frameBuffer.x, frameBuffer.y, gl.RGBA, gl.UNSIGNED_BYTE, pixelData); // 翻转Y轴 flip(pixelData, frameBuffer.x, frameBuffer.y, 4); // 确保有像素,微信小程序安卓在进入子页面返回本页面后,再一次readPixels稳定无像素 if (pixelData.some(i => i !== 0)) { this.screenshotResolve([pixelData, frameBuffer.x, frameBuffer.y]) this.screenshotResolve = null as unknown as Function; } } } } [代码] 具体可阅读代码片段 https://developers.weixin.qq.com/s/syS4xzmw7AnO
2021-01-23