问题描述:
我使用three.js来渲染模型,然后我是打算实现分层渲染的效果,所以模型按照层数给到了我,所以就是多个模型一起渲染。
可以看到下面的图片,是有很多模型数据的。我是使用new THREE.Object3D()
或者 new THREE.Group()
来集合这些模型的,然后scene.add(floorGroup)
。scene里面的确也是有这些模型数据的存在。
但是实际渲染的时候却只有一层,而且每次刷新都不一定是之前的那一层,随机的。
全部模型加起来也不大,就37MB左右。
请问,这很有可能是什么原因造成的?以及怎么处理?
5.10 之前就已经被这个问题困扰了,现在终于解决了,此问题历经2个星期。
期间,什么改变模型大小、位置、循环方式、模型数量、模型体积等等都一一尝试过,直到重新把目光放回到load
这个方法上面。
因为我要加载的是IFC模型,所以用的是IFCLoader
。而这个IFC.js后续的接口都是要通过modelID
这个属性值去查找和获取的。
然后,我发现返回的IFCmodel,里面的modelID都是一样的,很有可能就是渲染的时候就把它们都当作同一个模型了,进行的是替换渲染,所以无论有多少模型,最后都是只渲染一个。
经过排查,发现模型文件数据是没有问题的,那么很大可能就在load的时候出现的问题。再进一步把渲染逻辑理清后发现,如果每一次加载渲染的时候,都是一个重复的加载器对象的话,那么就会出现ID重复这个问题。
原先,我是设置了一个全局的加载器对象
let ifcLoader = new IFCLoader();
ifcLoader.load();
后面更正为在每一个循环里面重新构建
// 此处外层套个循环
loadIfcModel() {
let ifcLoaderObj = new IFCLoader();
ifcLoaderObj.load();
}
然后还是不太行的样子,又进一步优化为
// 此处外层套个循环
loadIfcModel() {
new IFCLoader().load();
}
最后,就解决了......没想到会这么简单的就解决了......有点怅然若失。
如图所示,渲染的时候,有时候会出现下面的两种情况: 图一,就是随机出现不规则的面,有时候过一会儿会消失,有时候不会。 图二,直接就是整个场景都变成了纯色并且一堆的噪点,这种情况就不会消失,只能刷新页面重新渲染。 这两个都是因为什么才出现的状况啊?如何解决? 图一: 图二:
如何给模型的渲染进行优化? 上图是我自己渲染出来的,下图是把模型上传到别的平台上渲染出来的,但是,很明显看出下图的更清晰一些,是因为加了阴影吗?还是别的什么?怎么样才能做到像图二一样。 (这是我渲染出来的) (这是通过别的平台渲染出来的)
原需求是将模型与地图进行结合渲染,结合的问题解决了。 但是,甲方提出一个需求说是希望使用地理坐标系的模型,这样可以方便后续的一些操作,虽然一时没有想明白,但是还是要做。 我的想法是: 1、模型在给到前端的时候,就已经是从地理坐标系转成了适用的右手坐标系。(这当然是最好的了) 2、在渲染前,可以对three进行一些配置,让其识别地理坐标系。 3、或者在添加到场景前先对所有构件进行坐标的转换。 ...
threejs的使用过程中,我发现会透光,在一些角度会穿过模型,有些时候不会穿过模型,是怎么回事 threejs的使用过程中,我发现会透光,在一些角度会穿过模型,有些时候不会穿过模型,是怎么回事,希望各位大佬帮忙解决,感谢
问题内容: 我正在尝试从JSON中的多个模型中呈现结果。我的控制器中的以下代码仅呈现第一个结果集: 任何帮助将不胜感激,谢谢。 问题答案: 一种执行此操作的方法是使用您要渲染的对象创建一个哈希,然后将其传递给render方法。像这样: 如果未通过活动记录关联模型,则可能是最好的解决方案。 如果存在关联,则可以将参数传递给render调用,如下所示: 请注意,如果采用这种方法,则不必在上一节中检索变
问题内容: 我正在做一个Flask应用程序。我有一个登录区域,一个博客区域。如果要获取用户的登录名,我将呈现登录模板。但这不会呈现必须显示在登录区域下方的博客模板。 我将尝试使其更加清晰: 现在我有一个扩展它,并进入登录块。我有一个进入。如何同时渲染两者?当我这样做时,我只能在login.html或之一上调用它。 请帮帮我。如果你需要,我会提供更多详细信息。 问题答案: 你可能会以错误的方式考虑布