THREE.JS 加载 STL 网格数组

2024-04-06

因此,我有一个数据库,其中包含文件引用列以及对其所需的子 STL 文件的任何引用。我可以将一两个模型加载到 THREE.js 查看器中,因此所有这些都可以正常工作,但是当我加载四个左右的数组时,事情开始变得毛茸茸的,分配的网格 ID 开始变得有点奇怪,并且多个网格得到相同的ID。因此,由于它适用于两个文件,我知道数组类型可以工作并且可以正确传递数据。 我想知道我的 loader.load 方法是否需要调整以等待网格加载和配置。否则我不知道我的问题是什么。 这里的第一部分调用我的 createMesh 函数并请求一个网格作为回报。正如我所说,这似乎一次适用于 1 或 2 个网格。

'if (indSTLCol.length>1 ){ for (item in indSTLCol){
                    getTheName="3dfiles\\"+fRSplit[parseInt(this.id)];
                    getTheName = getTheName.substring(0,getTheName.length-7);
                    getTheName=getTheName+indSTLCol[item]+".stl";
                    meshArr[item]=createMesh(getTheName);
                }

        }
        else{
            getTheName="3dfiles\\"+fRSplit[parseInt(this.id)];
            console.log("in ind collection"+ getTheName);
            console.log ("Added to Array"+meshArr[0].id);
            meshArr[0]=createMesh(getTheName);
         }

        console.log("BREAK");
        divId=this.id;

        fSizeX=700;
        fSizeY=500;
    }'
This part creates the mesh:
'function createMesh(getTheName){
            loader = new THREE.STLLoader();
            loader.addEventListener( 'load', function ( event ) {

                 geometry = event.content;
                 mesh = new THREE.Mesh( geometry, material );
                mesh.position.set( 0, 0, 0 );
                mesh.rotation.set( - Math.PI / 2, 0, 0 );
                mesh.scale.set( 2, 2, 2 );

                mesh.castShadow = true;
                mesh.receiveShadow = true; 
                mesh.id=getTheName;
                scene.add(mesh);
                /*  for (a in scene.children){
                    console.log("Child Name "+ scene.children[a].id+" " + a);
                } */ 
                //console.log("Mesh ID# " + mesh.id+" Mesh info: " + mesh);
                return mesh;
            } );

            mesh=loader.load( getTheName ); 
            return mesh;
        }'

我不擅长解释我的问题,所以如果您需要更多信息,请询问,我可以尽力解释得更好。 另外,我迭代了 scene.children 来检查 Id,它适用于两个及以下的网格。我开始相信,在创建几何图形之前,需要发生一些事情并分配 ID。

function createMeshArr(){
            for (var a in scene.children){
                if (scene.children[a] instanceof THREE.Mesh){
                    smeshArr[a]=scene.children[a];
                }   
            }
            return smeshArr;

好吧,这似乎有效,但不知道为什么:

function createMesh(getTheNames){

                loader = new THREE.STLLoader();
                mesh=loader.load( getTheNames);
                loader.addEventListener( 'load', function ( event ) {
                    var material =  new THREE.MeshLambertMaterial({color: 'blue' });
                    var geometry = event.content;
                    var mesh = new THREE.Mesh( geometry, material );
                    mesh.position.set( 0, 0, 0 );
                    mesh.rotation.set( - Math.PI / 2, 0, 0 );
                    mesh.scale.set( 2, 2, 2 );

                    mesh.castShadow = true;
                    mesh.receiveShadow = true; 
                    mesh.id=getTheNames;
                    scene.add(mesh);
                    return mesh;
                } ); 

                return mesh;
            }

下面是一个简单的例子,使用回调强制加载器等待,直到上一个加载完成。

var callback = function ( geometry ) { 
    var myMesh = new THREE.Mesh( geometry, basicMat );
    meshArray.push(myMesh);
    myScene.add( myMesh );
    i++;
    if (i < numberOfMeshesToLoad)  // put the next load in the callback
        myLoader.load( filename[i], callback ) ;
};

i = 0;

myLoader.load( filename[i], callback ); //initial loader call
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

THREE.JS 加载 STL 网格数组 的相关文章

  • ThreeJS中InstancedMesh和InterleavedBuffer的区别和使用

    任何人都可以帮助我们解决 Threejs 中 InstancedMesh 和 InterleavedBuffer 之间的区别吗 我对这两个主题都感到困惑 任何人都可以让我知道哪种是渲染大量几何图形的优化方法 提前致谢 实例化渲染和交错缓冲区
  • 如何将 3D 模型从 Cinema4D 导出到 Three.js?

    如果我有一个网格建模4D影院 我怎样才能将其导出three js http github com mrdoob three js3D JS 引擎 另外 导出材料也很方便colors for 多边形选择 为此 我刚刚为 Cinema4D 编写
  • 将几何图形转换为 BufferGeometry

    据我了解 Geometry 存储顶点和面的 javascript 对象结构 而 BufferGeometry 仅通过 Float32Arrays 等存储原始 gl 数据 有没有什么方法可以将标准 Geometry 转换为 BufferGeo
  • 如何将 SketchUp 模型导出到 Three.js?

    我通过谷歌创建了一个模型SketchUp 我想将其导出到three js节省一些时间 因为我想使用SketchUp比three js 那么有人可以告诉我该怎么做吗 非常感谢 您可以从 SketcUp 导出 collada DAE 然后使用
  • 如何在 Three.js 上覆盖 HTML 文本/按钮?

    好的 很新three js在这里 但我正在努力实现谷歌所拥有的https beinternetawesome withgoogle com interland https beinternetawesome withgoogle com i
  • 从数组 THREE.js 创建纹理

    我正在研究地形生成器 但我不知道如何处理颜色 我希望能够生成一张占据整个 PlaneGeometry 的图像 我的问题是如何根据我的高度图创建一个覆盖整个 PlaneGeometry 没有环绕 的单个图像 我可以想到一种方法 但我不确定它是
  • 绕局部轴旋转

    我正在尝试实现一个对象 围绕一个位置 POI 兴趣点 飞行并面向它 当您按 WASD 时 您可以更改 POI 的旋转 A 和 D gt 更改 y 轴 W 和 S 更改 x 轴 正如您在演示中看到的 http jsbin com yodusu
  • 在 Python 中创建二维非矩形形状的三角形网格

    假设我有一组点定义二维平面中非矩形形状的周长 我需要一个函数来创建三角形网格划分 在其中可以修改三角形单元的数量并返回每个单元的 x y 坐标 谢谢 你可能应该看看 dmsh https github com nschloe dmsh py
  • 如何在 Three.js 中从三角面获取多边形?

    我在网上查了一下是否有人遇到同样的问题 我正在使用 Three js 我有一个 3DObject 其中可能包含孔 面是三角形的 假设我想从上面看到它 我的目标是获得一个代表顶面周长的多边形 这对我来说意味着不再有三角面 而只有 1 个多边形
  • Three.js 中几何图形的事件处理? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在寻找对 Three js 中的几何图形 相机 灯光 我们添加到场景中的东西 进行某种事件处理 我用谷歌搜索但找不到任何相关内容
  • 动画 GIF 作为 THREE.js 中的纹理

    我正在寻找一种在 THREE js 中使用 GIF 动画作为纹理的方法 我目前可以加载纹理 甚至是 GIF 格式 但它无法播放动画 有什么办法可以做到吗 我发现了一些像这样的链接 https github com JordiRos GLGi
  • 无法让 raycaster.intersectObjects() 从远处返回相交的对象

    我有一个包含几个随机数的散点图Sprite用作数据点的对象 我想检测鼠标指针 光标 和Sprite对象 我用来检测交叉点的设置如下 var projector new THREE Projector window addEventListe
  • Three.js:基于图像的光照(IBL)

    I m searching to add an IBL to my scene and objects But I can t find anything on the web There are some examples with an
  • 如何计算给定坐标处相机可见矩形的大小? [复制]

    这个问题在这里已经有答案了 我制作了一个小型的 Three js 应用程序 它将一堆圆圈从画布的底部移动到顶部 let renderer scene light circles camera initialize animate funct
  • 在 TypeScript 中使用三个 Js + OrbitControl

    我无法得到this http www example com 在 TypeScript 中使用上述组合的示例 I have and 在我的html中和打字稿文件
  • Three.js 设置并读取相机外观向量

    而不是使用camera rotation或lookAt 函数旋转相机 我想将外观矢量直接传递给相机 是否可以直接设置相机外观矢量以及是否可以从相机读取外观矢量 相机没有 外观矢量 因此无法设置它 但是 您可以构造一个point通过将您的外观
  • Three.js - 如何翻译几何图形

    我有一个脚本 可以定位各种宽度 高度和深度的立方体 并且正在努力根据 xAxis yAxis 和 zAxis 也有所不同 将它们准确地排列起来 var geometry new THREE BoxGeometry width height
  • Three.js - 将 WebGL 和 CSS3D 与 iFrame 混合

    我准备了一个混合的工作页面WebGL and CSS3D 在SO的一点帮助下here https stackoverflow com questions 24681170 three js properly blending css3d a
  • 开始使用 Three.js 中的行进立方体

    我是 Three js 的新手 正在寻找教程来帮助我开始了解如何在 Three js 中使用 Marching Cubes 到目前为止 我在 Three js 中看到的一些使用它的项目对我来说有点复杂 所以一个简单的教程会很好 谢谢 像您一
  • (A 框架)本地 gltf 不会加载;无法读取未定义的属性“切片”

    我从A型框架学校 https aframe io aframe school 11其中加载了 gltf 模型 然后我从 Khronos 加载了示例模型 this box https github com KhronosGroup glTF

随机推荐

  • linux下限制R内存使用

    我们在 Linux 集群环境中运行 R 当用户无意中使用 R 进程占用所有内存时 头节点会出现几次挂起 linux下有没有办法限制R内存使用 我不想建议全局 ulimit 但这可能是唯一的出路 There s unix rlimit as
  • $.getJSON 解析器错误尝试调用 API

    我正在尝试使用 Clipped API http clipped me api html http clipped me api html 返回 JSON 但遇到了一些麻烦 我正在使用 getJSON 在 Chrome 的 JS 控制台中我
  • 是否有任何编程语言支持定义原始数据类型的约束?

    昨晚我在想编程语言可以有一个功能 我们应该能够限制分配给原始数据类型的值 例如 我应该可以说我的 int 类型变量只能具有 0 到 100 之间的值 int lt 0 100 gt progress 然后 这将在所有情况下充当普通整数 除非
  • 在Android中使用OpenCV将NV21转换为RGB

    我正在尝试在 Android 中使用 OpenCV 因此 我首先通过并排放置两个 SurfaceView 来测试 OpenCV 其中一个SurfaceView用于预览相机的输出 输出格式显然是NV21 另一个SurfaceView通过Ope
  • 如何在 Jersey 客户端中发送 DELETE 请求中包含的数据?

    我在 Jersey 2 x 中有以下服务器端代码 Path store remove from group DELETE Consumes MediaType APPLICATION FORM URLENCODED Produces Med
  • 自定义会员资格提供商*没有*数据库?

    我一直在寻找有关 MVC 4 中成员资格提供程序更改的各种 SO 问题 博客文章等 虽然我喜欢其中的许多更改和简化 尤其是开箱即用的外部登录 支持 我还无法找到一件看似简单的事情 如何使用使用其他数据源的自定义成员 角色提供者覆盖成员资格
  • 如何从 viewcontainer 角度删除特定视图

    在下面的示例中 https stackblitz com edit angular 1acvol https stackblitz com edit angular 1acvol 我使用创建了多个视图TemplateRef并将它们附加到同一
  • 异步加载车把模板

    我正在尝试编写一个函数 该函数将为我提供一个已编译的车把模板 我将所有模板都放在单独的文件中 使用 ajax 调用来获取模板并编译它以供使用 但我需要使用承诺 以便我可以实际使用它 function getTemplate name get
  • Python,OpenCV:增加图像亮度而不溢出UINT8数组

    我正在尝试增加灰度图像的亮度 cv2 imread 返回一个 numpy 数组 我正在向数组的每个元素添加整数值 从理论上讲 这会增加它们中的每一个 之后我就可以将上限设置为 255 并获得具有更高亮度的图像 这是代码 grey cv2 i
  • 连接建立后如何从服务器(使用连接列表)向客户端发送命令?

    我有这两个类 它们是我的服务器应用程序 桌面 的一部分 需要在建立连接后将命令发送回客户端 当我尝试这样做时 clients i Send info the Send 例行公事 的监听器 cs 可以访问 但我有以下语法错误 怎么解决这个问题
  • CSS 关键帧动画与平移变换在 IE 10 和 Firefox 中捕捉到整个像素

    看起来 IE 10 和 Firefox 在使用 css 关键帧动画中的平移 2d 变换对元素的位置进行动画处理时 都会将元素捕捉到整个像素 Chrome 和 Safari 没有 看起来a lot制作微妙运动动画时效果更好 动画是通过以下方式
  • 2 个不同长度的排序数组的中值

    如何找到长度分别为 m 和 n 的 2 个已排序数组 A 和 B 的中位数 我已经搜索过 但大多数算法都假设两个数组的大小相同 我想知道如果 m n 我们怎样才能找到中位数 考虑例子 A 1 3 5 7 11 15 其中 m 6 B 2 4
  • 在 AngularJS 中处理来自代理的 HTTP 302 响应

    我有一个反向代理 可以检查多个应用程序的全局身份验证 当用户断开连接但仍尝试使用我的应用程序时 代理会发送 302 响应 HTTP 1 1 302 Found Date Wed 11 Sep 2013 09 05 34 GMT Cache
  • 生成递归目录搜索的 XML 映射

    我正在阅读一个列表 其中某些组件下有大量档案 例如 component1 filelocation1 a11 ear component1 filelocation1 a12 ear component2 filelocation2 a2
  • 如何在Rails 3.2 erb中使用eval在运行时执行存储在字符串中的视图代码?

    我们想要做的是存储一大块erb代码在一个string然后在运行时执行代码 这是我们所做的测试 从工作的 erb 文件中取出一段代码 使用 eval 重写 erb 文件 这是取出的 erb 代码块 tr th th th th th th t
  • [Laravel]:SQLSTATE[3F000]:模式名称无效

    构建 Laravel 项目 v 5 4 当我运行时php artisan migrate我收到以下错误消息 Illuminate Database QueryException SQLSTATE 3F000 Invalid schema n
  • Mockk-spyk 模拟方法仅一次

    I have spyk from mockk图书馆 my spyk My 后来我嘲笑其中一种方法返回类似的内容 every my method someString returns something 我正在创建这个spyk in a Be
  • 获取具有默认值的参数列表

    我使用 ALL ARGUMENTS 来获取 oracle 10g 中的参数列表 但我找不到参数是否有默认值 我怎样才能做到呢 您可能需要在 10g 中采用 plsql 编程 如下面的代码示例所示 从某种意义上说 这个解决方案肯定是蛮力的 因
  • 如何在 javascript Chart.js 中仅显示整数

    我想在java脚本库创建的图表中仅显示整数而不是浮点数Chartjs org http www chartjs org docs 这是示例的链接graph http qlu in 0o3CTx stats 我是新手 有人可以帮我配置这个吗
  • THREE.JS 加载 STL 网格数组

    因此 我有一个数据库 其中包含文件引用列以及对其所需的子 STL 文件的任何引用 我可以将一两个模型加载到 THREE js 查看器中 因此所有这些都可以正常工作 但是当我加载四个左右的数组时 事情开始变得毛茸茸的 分配的网格 ID 开始变