本帖最后由 Felix.Li 于 2024-11-19 15:48 编辑
快看知识:
1.3D脚本的scene对象比较特殊,所有方法都是全局公用的,所以我们可以把自己写的变量和方法挂在scene对象上。然后就可以在其他脚本里面调用和使用。
2.sceneData有很多内置的方法,包括调用动画(我们的设计器做的),调用场景漫游和数据点漫游,以及tooltip的显示。唯一需要注意的就是tooltip的显示,这个不是改变显示隐藏的属性。而是是否启用数据图层。
所以如果要自己做tooltip的显示隐藏,需要把tooltip的显示隐藏改成总是显示。然后调用enableDataLayer和disableDataLayer。还有个点需要注意,如果存在场景的切换,也就是模型的visible被改变过。或者模型是被通过代码添加进来的,需要先调用一次updateDataLayer,先重绘,在控制显示隐藏。
3.模型的位置,我们会习惯去点一个模型节点,获取他的X,Y,Z。然后把另一个模型位置改成获取的这个坐标,会发现这个坐标不对。其实是因为模型节点的位置是根据父节点来的,所以他的位置是相对于父节点。而不是相对整个场景,所以我们如果要获取整个场景的某个固定位置坐标,需要用根节点来获取位置坐标。小技巧。可以新加一个小的模型,然后用新加的小的模型根节点来定位坐标。
4.设计器里面的树形结构里面有三种节点,模型、模型节点、模型节点容器。三个对应的不一样。(nodeName代表模型节点点击后,右边属性里面的名称)
模型:模型是最外层的节点,其实这个不属于模型设计的任何节点,是wyn的设计器为了区别引入不同的模型。
模型节点:模型设计存在的一种常用节点,可以通过代码:
- scene.getMeshByName(nodeName)
复制代码
获取到对应的节点.可以用来改变控件坐标,添加动画,显示隐藏等。
模型节点容器:和上面一个一样,但是获取的代码不一样:
- scene.getNodeByName(nodeName)
复制代码
5.3D场景的脚本是在 场景设定 -> 场景 -> 数据交互 -> 自定义脚本中实现。里面有几种时机.
场景加载完成: 始于做一些初始化的操作,例如写一个全局方法或者全局对象,然后挂在scene对象下,这样后面其他所有脚本就可以直接调用。
数据图层加载完成和数据图层改变: 都是配合数据图层的,也就是做一些动画随着数据而需要触发的动画。
手动触发:直接在仪表板页面通过命令触发
快速获取内置的一些东西:
获取默认摄像机:
- const arcRotateCamera = scene.cameras.filter(item => (item.name == "ArcRotateCamera"))[0];
复制代码
获取默认光源(默认没有光源,当我们在场景设定把环境背景设置为无后,就会添加一个默认的光源)
- const light = scene.getLightByName("半球光");
复制代码
|
|