如何动态更改球体对象的颜色(在 Autodesk forge 中使用 SceneBuilder)

     2023-03-16     273

关键词:

【中文标题】如何动态更改球体对象的颜色(在 Autodesk forge 中使用 SceneBuilder)【英文标题】:How to change the color of sphere objects dynamically (used SceneBuilder in Autodesk forge) 【发布时间】:2020-09-19 13:11:49 【问题描述】:

我正在研究 Petr Broz 的 Custom models in Forge Viewer 博客中的示例。我在动态更新球体对象的颜色时遇到问题。我从像"color": "#FF0000" 这样的 json 文件中获取球体颜色的值。我已经创建了 3 个球体,其余的球体也得到了第一个球体的颜色。为什么其他球体的颜色没有更新?如果问题出在使用相同的材​​料上,那么我尝试在数组中给出 sphereMaterial,如下所示。这是错误的还是我如何更新颜色?

var spherecolor='';
var sphereMaterial = [];
const button = document.getElementById('button-geometry');
  button.addEventListener('click', async function () 
  const sceneBuilder = await viewer.loadExtension('Autodesk.Viewing.SceneBuilder');
  const modelBuilder = await sceneBuilder.addNewModel( conserveMemory: true, modelNameOverride: 'My Custom Model' );
  for (var i = 0; i < numOfSphere;i++) 
    addGeometry(modelBuilder, jsonGeomConfig.geom[i].dbId, i);
  
);
function addGeometry(modelBuilder, dbId, i) 
  const sphereGeometry = new THREE.BufferGeometry().fromGeometry(new THREE.SphereGeometry(0.05, 8, 10));
  //Getting spherecolor from json file
  spherecolor = jsonGeomConfig.geom[i].color;
  sphereMaterial[i] = new THREE.MeshPhongMaterial( color: spherecolor );
  const sphereTransform = new THREE.Matrix4().compose(
    new THREE.Vector3(jsonGeomConfig.geom[i].Position.posX, jsonGeomConfig.geom[i].Position.posY, jsonGeomConfig.geom[i].Position.posZ),
    new THREE.Quaternion(0, 0, 0, 1),
    new THREE.Vector3(2,2,2)
  );
  modelBuilder.addMaterial('MyCustomMaterial', sphereMaterial[i]);
  const sphereGeomId = modelBuilder.addGeometry(sphereGeometry);
  const sphereFragId = modelBuilder.addFragment(sphereGeomId, 'MyCustomMaterial', sphereTransform);
  modelBuilder.changeFragmentsDbId(sphereFragId, dbId);

【问题讨论】:

Three.js 使用十六进制设置颜色很好 - 不知道 jsonGeomConfig 里面有什么我不知道到底出了什么问题......只是用我自己的代码进行了测试,一切正常。 .. jsonGeomConfig 有来自 json 文件的响应。我正在从该文件中获取球体的颜色。我已经创建了三个球体对象,其中我得到了其余的第一个球体颜色,我将分享我在 json 文件 (jsonGeomConfig) 中给出的内容 "NumOfSphere": "3", "geom": [ "dbId": "123", "color": "#FF0000", "Position": "posX": "-5", "posY": "-1", "posZ": "2.5" , "dbId": "1234", "color": "#0000FF", "Position": "posX": "-5", "posY": "-0.8", "posZ": "1.8" , "dbId": "12345", "color": "green", "Position": "posX": "-3.5", "posY": "-1.5", "posZ": "1.8" ] 【参考方案1】:

一定要给不同颜色的材料起不同的名字......否则它会被覆盖 - 请参阅this live environment:

  modelBuilder.addMaterial('MyCustomMaterial'+i, sphereMaterial[i]);
  const sphereGeomId = modelBuilder.addGeometry(sphereGeometry);
  const sphereFragId = modelBuilder.addFragment(sphereGeomId, 'MyCustomMaterial'+i, sphereTransform);

【讨论】:

如何在 Autodesk Forge 查看器中更改选择颜色?

】如何在AutodeskForge查看器中更改选择颜色?【英文标题】:Howdoyouchangeselectioncolorintheautodeskforgeviewer?【发布时间】:2019-07-1908:50:50【问题描述】:在ForgeViewerv3中,我们像这样设置选择的颜色:onRequestClick(e)constTHREE_RED_COLOR=newTHREE.... 查看详情

如何为覆盖在 3D 模型上的球体对象显示鼠标单击事件的弹出数据(使用 Autodesk forge)

...3D模型上的球体对象显示鼠标单击事件的弹出数据(使用Autodeskforge)【英文标题】:Howtodisplayapopupdataonmouseclickeventforthesphereobjectswhichisoverlayedonthe3Dmodel(usingAutodeskforge)【发布时间】:2020-09-0323:32:18【问题描述】:我创建了一个项... 查看详情

如何在 Autodesk forge 查看器 setTheming 颜色方法中使用十六进制颜色代码?

】如何在Autodeskforge查看器setTheming颜色方法中使用十六进制颜色代码?【英文标题】:HowcanIusehexadecimalcolorcodeinautodeskforgeviewersetThemingcolormethod?【发布时间】:2020-09-2415:38:53【问题描述】:我有一些从API动态返回的颜色代码。我想... 查看详情

如何在对象上调整大小 - Autodesk Forge Viewer

】如何在对象上调整大小-AutodeskForgeViewer【英文标题】:Howtoresizeonobject-AutodeskForgeViewer【发布时间】:2020-01-1801:59:30【问题描述】:如何更改对象的大小?我需要改变物体的高度例如,我们需要改变门或窗帘的高度在这段代码中... 查看详情

如何在 onPressed() 中动态更改凸起按钮的背景颜色

】如何在onPressed()中动态更改凸起按钮的背景颜色【英文标题】:HowtochangethebackgroundcolorofraisedbuttondynamicallyinonPressed()【发布时间】:2019-09-0111:24:17【问题描述】:我有一个凸起按钮列表,我希望所选按钮的背景颜色在其onPressed()... 查看详情

如何在 Kivy 中动态更改标签背景颜色

】如何在Kivy中动态更改标签背景颜色【英文标题】:HowtochangelabelbackgroundcolordynamicallyinKivy【发布时间】:2019-11-2613:57:21【问题描述】:我尝试制作一个简单的ToDoList程序。有添加、删除和执行按钮。但是我有一些关于标签颜色的... 查看详情

如何根据前景图像在android中动态更改状态栏的颜色?

】如何根据前景图像在android中动态更改状态栏的颜色?【英文标题】:Howtochangecolorofstatusbardynamicallyinandroidbasedupontheforegroundimage?【发布时间】:2019-09-2806:29:36【问题描述】:我想实现与我们在WhatsApp中看到的相同的功能,同时看... 查看详情

Autodesk Forge 查看器将选择颜色设置为默认值

】AutodeskForge查看器将选择颜色设置为默认值【英文标题】:autodeskforgeviewersetselectioncolortodefault【发布时间】:2020-10-2708:14:11【问题描述】:在对象选择时,我使用下面的代码来更改所选对象的颜色,viewerApp.getCurrentViewer().impl.setS... 查看详情

Android - 如何动态更改 SwitchPreference 开关的拇指/轨道颜色

】Android-如何动态更改SwitchPreference开关的拇指/轨道颜色【英文标题】:Android-Howtodynamicallychangethethumb/trackcolorofaSwitchPreference\'sswitch【发布时间】:2018-02-0718:17:16【问题描述】:到目前为止,我只能在文本上使用setSpan()更改首选项... 查看详情

使用 jquery 动态更改背景颜色

】使用jquery动态更改背景颜色【英文标题】:Changingbackgroundcolordynamicallywithjquery【发布时间】:2014-08-0612:05:19【问题描述】:现在我的页面的一部分有一个对象列表。当您将鼠标悬停在它们上方时,背景会变为浅黄色,并在您将... 查看详情

如何动态更改网页所选菜单项的颜色?

】如何动态更改网页所选菜单项的颜色?【英文标题】:Howtodynamicallychangethecoloroftheselectedmenuitemofawebpage?【发布时间】:2011-06-0421:48:56【问题描述】:我是开发网页的新手。我希望创建类似于***.com中的菜单(如上面显示的问题、... 查看详情

动态地,在运行时,如何在 WPF 中更改文本框中某些单词的颜色?

】动态地,在运行时,如何在WPF中更改文本框中某些单词的颜色?【英文标题】:Dynamically,atrun-time,howtochangethecolorofsomewordsinatextboxinWPF?【发布时间】:2018-12-2400:18:50【问题描述】:我正在尝试在WPF中的文本框中更改某些单词的颜... 查看详情

如何在 SwiftUI 中更改 SceneView 3D 对象的背景颜色

】如何在SwiftUI中更改SceneView3D对象的背景颜色【英文标题】:HowtochangethebackgroundcolorofaSceneView3DObjectinSwiftUI【发布时间】:2021-08-1809:12:24【问题描述】:有人知道如何更改SceneView对象的背景颜色吗?我正在尝试将背景属性放置到Sc... 查看详情

如何在html对象元素中更改svg位置的背景颜色[重复]

】如何在html对象元素中更改svg位置的背景颜色[重复]【英文标题】:Howtochangemybackgroundcolorofsvgplaceinhtmlobjectelement[duplicate]【发布时间】:2018-04-2420:15:23【问题描述】:如何更改html对象元素中svg位置的背景颜色。使用CSS、Jquery或Jav... 查看详情

如何在 mfc 中更改 CImage 对象的背景颜色?

】如何在mfc中更改CImage对象的背景颜色?【英文标题】:howtochangethebackgroundcolourofCImageobjectinmfc?【发布时间】:2012-09-2615:54:23【问题描述】:我有一个包含一些对话框的Windows应用程序。对话框是使用mfc构建的。我正在使用CImage::D... 查看详情

使用对象时如何在鼠标悬停时更改 SVG 笔触颜色

】使用对象时如何在鼠标悬停时更改SVG笔触颜色【英文标题】:HowtochangeSVGstrokecoloronmouseoverwhenusinganobject【发布时间】:2020-05-3016:50:15【问题描述】:当鼠标移到图像上时,我正在尝试更改svg图像笔触颜色。我现在所拥有的并没... 查看详情

如何动态更改 iexplore 背景颜色

】如何动态更改iexplore背景颜色【英文标题】:howtochangeiexplorebackgroundcolordynamically【发布时间】:2016-12-1409:45:43【问题描述】:我正在从我的Win32应用程序作为一个单独的进程启动InternetExplorer。稍后,我想从我的应用程序中动态... 查看详情

如何更改 ag-grid 单元格的颜色以动态更改数据

】如何更改ag-grid单元格的颜色以动态更改数据【英文标题】:Howtochangecolorofag-gridcellsfordynamicallychangingdata【发布时间】:2017-01-3114:19:45【问题描述】:我有一个从动态变化的数据加载的表。它每5秒刷新一次。我在这个例子中使... 查看详情