Home › Forums › Games202-高质量实时渲染 › 作业0 结果不稳定,有时模型显示不全
Tagged: 作业0
- This topic has 19 replies, 11 voices, and was last updated 1 year, 4 months ago by Pattiiii.
-
AuthorPosts
-
-
xiexuefengParticipant
+1,不知道是啥问题,反正只能看到202和光源(我是Mac + Chrome/Safari);不过我自己用Three.js(npm包)加载就好了;
-
能麻烦分享一下具体步骤吗?
-
xiexuefengParticipant
其实就是用three.js的OBJLoader加载课程给的obj模型就是了,没啥特别的;
https://threejs.org/docs/?q=OBJ#examples/zh/loaders/OBJLoader
-
Misaka MahiruParticipant
大佬,我把作业0里的OBJLoader用官方文件换掉了之后依然两眼一黑。。js小白。。具体操作是什么可以指点一二嘛,,Orz
-
-
-
-
爱登堡Participant
我也遇到一样的问题,用官方的three.js,直接替换项目中的three.js,然后就会出现其他问题。
-
Misaka MahiruParticipant
踢踢lz,找到解决方案了嘛Orz
-
暂时有了一个折衷的解决办法(这很图形学)。因为这个事情可以通过刷新解决,所以我只要想办法知道是模型加载出了问题,还是我写的代码有问题即可。如果代码没问题,那么多刷新几次就可以了。
那怎么样知道是不是模型加载出了问题呢?我看了一下 three.js 的 OBJLoader 的文档,发现作业0中的 onError 函数实现的有问题,将至改成
function onError(err) {
console.error( ‘An error happened:’ , err);
}即可。
在渲染时打开 Console,如果有 err 就是模型加载的问题,如果没有 err,应该就是预期的结果了。
这个 err 我也具体看了一下,是 material 的 img 没有加载出。但具体为什么没有加载出,还没有研究出来。图形学新手。
This post has received 1 vote up.- This reply was modified 2 years, 9 months ago by 刀客塔.
-
Misaka MahiruParticipant
根据大佬方法,onError函数正常报错了。但是也没有研究出来为什么会有TypeError: Failed to execute ‘texImage2D’ on ‘WebGLRenderingContext’: Overload resolution failed.这个错误。
不过大佬是怎么刷新出来的呢?我用的win10+edge+vs环境,一直只能看到光源和202.换了chrome直接两眼一黑只有UI了。。-
差不多,不过我是用的 Chrome。两眼一黑只有UI还有一个可能性是 three.js 没下载下来,因为这个是从 cloudflare 上下载的,需要挂代理。
刷新就是CTRL+R多按几次……
-
Misaka MahiruParticipant
谢谢!挂梯子+刷新好几次终于出来了。。那我也不去管那些报错了Orz
-
-
-
芭比Q了,作业1我刷了好久也没刷出来……
看来没办法是要学习一下 three.js 了…… -
研究了一下,知道了为什么会刷不出来模型,从原理上讲,应该大部分人都刷不出来才对。
在
loadOBJ.js
中,materials.preload();
其实是一个异步方法,这个方法会去 load mtl文件,image 文件的路径也在其内,然而在这步方法之后紧接着就去 load object 并且使用了 mtl 文件中的 image,因为前一步是异步的,这个时候 material 其实还没有load 完成,导致了 object load 时的报错。如果使用 Promise 方法可能会比较优雅,不过代码改动量比较大。我也是JS小白。
一个比较 tricky 的方法就是在 load object 的前等一等,最后这段代码如图所示,我用一个函数wrap了一下load object 的过程,然后使用 setTimeout 等了100ms。
This post has received 2 votes up.Attachments:
You must be logged in to view attached files. -
加载不稳定原因楼上说的挺清楚了,可以在index.html中<head>中最上面(21行)加<link rel=”preload” href=”/assets/mary/MC003_Kozakura_Mari.png” as=”image” type=”image/png” crossorigin/>让材质图片预先加载
This post has received 2 votes up. -
雅各布Participant
预加载的方案比较优雅,实操有效,谢谢了。
-
limilParticipant
非常感谢,预加载有用
-
愿我能Participant
预加载有用,也感谢楼主的分析
-
AuthorPosts
- You must be logged in to reply to this topic.