使用光线投射时如何重新着色所有模型的零件?

2023-12-28

我有一个fanfare.reality我的模型arView来自现实作曲家。我进行光线投射entity(at:location)并启用ModelDebugOptionsComponent(visualizationMode: .lightingDiffuse)被击中的物体的数量,使物体的外观变成灰色。然而,我发现只有喇叭本身变成了灰色,而喇叭上方的旗帜根本没有变化。

我通过以下方式加载 fanfare.realityLoadAsync()并打印返回值,如下所示。原因是旗帜、星星和号角本身分为3个ModelEntity。在 RealityKit 中,光线投射通过以下方式搜索实体CollisionComponent.only 可以添加到具有ModelComponent.

因此,我的问题是,当我点击屏幕上的模型(通过光线投射)时,如何将整个现实模型变成灰色(扇形+旗帜+星星)。


分离部件模型方法

您可以轻松检索所有 3 个模型。但是您必须指定整个长层次路径:

let scene = try! Experience.loadFanfare()

// Fanfare – .children[0].children[0]
let fanfare = scene.children[0] ..... children[0].children[0] as! ModelEntity
fanfare.model?.materials[0] = UnlitMaterial(color: .darkGray)
    
// Flag – .children[1].children[0]
let flag = scene.children[0] ..... children[1].children[0] as! ModelEntity
flag.model?.materials[0] = UnlitMaterial(color: .darkGray)

// Star – .children[2].children[0]
let star = scene.children[0] ..... children[2].children[0] as! ModelEntity
star.model?.materials[0] = UnlitMaterial(color: .darkGray)

从以下位置检索模型实体时,我没有看到太大区别.rcproject, .reality or .usdz文件。根据打印的图表,所有三个模型实体都位于同一层次结构级别,它们是同一实体的后代。条件在if statement可以设置为最简单的形式——如果光线击中碰撞形状 https://stackoverflow.com/questions/60191009/reality-composer-custom-collision-between-entities-of-different-scenes/60192226#60192226 of fanfare or (||) flag or (||) star,那么所有三个模型都必须重新着色。

单一模型方法

通过光线投射与 3D 模型交互的最佳解决方案是单一模型方法。单一模型是一个实体 3D 对象,没有单独的部分 - 所有部分都组合成一个完整的模型。单模型的纹理始终是mapped https://stackoverflow.com/questions/58170389/add-texture-to-some-part-of-3d-model/58182496#58182496在 UV 编辑器中。单一模型可以在 Maya 或 Blender 等 3D 创作应用程序中制作。


P.S.

所有经验丰富的 AR 开发人员都知道哇! AR体验与代码无关,而是与 3D 内容有关。您知道,如果您的 3D 模型由许多部分组成,那么就不存在简单解决方案的“灵丹妙药”。使用代码时,制作精良的 AR 模型成功率为 75%.

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

使用光线投射时如何重新着色所有模型的零件? 的相关文章

随机推荐

  • 什么是 Git 修剪?

    我不小心修剪了一些远程分支 我真的不知道这样做的后果是什么 我单击了 Git 扩展中的 修剪远程分支 按钮 认为它会删除远程分支 官方文档说 git prune 从对象数据库中删除所有无法访问的对象 我实在不明白这是什么意思 我猜这可能会删
  • 需要帮助使用 Perl 修复此正则表达式代码吗?

    我需要您的专业帮助来使用 perl 修复此正则表达式代码 我有这个数据文件 Data SCSI test A ccccccccccccccccc aaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbb Data SCSI t
  • 如何在 python 代码中利用 locals() ?

    我在阅读时偶然发现了以下警告像 Pythonista 一样编码 惯用的 Python http python net goodger projects pycon 2007 idiomatic handout html作者 大卫 古杰 文章
  • 如何使用 on_delete 属性在用户模型的外键字段中设置用户全名?

    我在 django 中有一个模型 它具有带有用户模型的外键 class News models Model user models ForeignKey AUTH USER MODEL on delete models SET messag
  • 内容和 div 之间的边距溢出滚动条

    我使用以下代码来保持菜单项固定 同时允许内容滚动 因为它似乎是所有浏览器中最稳定的方法 body overflow hidden div content height 100 overflow auto 我的问题很简单 但我似乎无法弄清楚
  • Mongodb聚合框架|对多个值进行分组?

    我想使用 mongoDB 的聚合框架来运行 SQL 中的内容 看起来有点像 SELECT SUM A B C from myTable GROUP BY B C 文档指出 您可以指定管道中文档中的单个字段 先前计算的值或由多个传入字段组成的
  • 在 Azure Web App 上打开其他端口

    我最近将 NET Web API 2 应用程序从 Azure 云服务迁移到 Azure Web 应用程序 但是 我们有一个遗留应用程序需要与端口 8080 和 444 上的 API 进行通信 有没有办法在网络应用程序上打开额外的端口 你不能
  • django 1.9 和注册/login.html

    我正在开发 django 1 9 项目 在 Django 1 7 7 中 登录功能可以正常工作 但现在我一直有 registration login html Template Does Not Exist 模板 login html lo
  • 将 OpenIdConnect 与 AzureFunctions 结合使用

    我使用 azure 函数来托管 React 应用程序的 API 但我也使用相同的 azure 函数来托管应用程序的 html js css 通过 Blob 存储上的静态文件的代理函数 我一直在使用 EasyAuth 为其提供身份验证 效果非
  • 从 javascript 数组中查找匹配的字符串

    我有一组字符串 我需要找到以某个键开头的所有字符串 例如 如果有一个数组 apple ape open soap 当使用键 ap 搜索时 我应该只得到 苹果 和 猿 而不是 肥皂 这是在 JavaScript 中 Use indexOf h
  • 从 GWT 调用 JQuery 函数

    我正在启动一个使用 GWT 的项目 设计团队使用 HTML 和 JQuery 制作了一个原型 我实际上正在使用 UIBinder 来 重建 UI 我的问题是应用程序有一个使用 JQuery 的下拉菜单 但它不起作用 到目前为止 我尝试的是在
  • std::map 可以在调用 const 函数期间重新平衡吗?

    我有一个const std map
  • 如何制作一款FPS游戏? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 Meteor 应用程序中将 mongofiles 与 GridFS 结合使用

    我开始在 Meteor 应用程序中使用 GridFS 我已经使用 GridFS 存储适配器设置了文件集合 assetFiles 如下所示 AssetCollection new Mongo Collection assets AssetFi
  • 构造随机字符串

    如何使用Python中的随机函数构造一个超过5个字符且最多15个字符的字符串 import string letters list string lowercase 在导入和分配之后 假设您希望以相同的概率获得所有可能的长度 import
  • 使用 MongoDB 更新数组

    我有像这样的 JSON id 1 class com model Test itemList itemID 1 itemName Foo 资源 资源ID 1 资源名称 Foo Test1 资源ID 2 资源名称 Foo 测试2 我需要能够更
  • 在 webpack 构建期间登录到节点控制台或调试

    webpack 构建过程中调试的最佳实践是什么 入口脚本中的任何console log都不会输出到节点控制台 从 webpack 的当前版本 2019 年 9 月 开始 如果您进行构建而不是启动开发服务器 console log 将输出到
  • 如何在pyCharm中的jupyter中指定python3内核?

    Here is my setting and this is my script 我试图在 pyCharm 中使用 jupyter 笔记本 但它一直使用 python2 而不是 python3 对这个问题有什么想法吗 Add this pi
  • 更改seaborn直方图(或plt)中数据选择的条形颜色

    假设我有一个像这样的数据框 X2 np random normal 10 3 200 X3 np random normal 34 2 200 a pd DataFrame X3 X3 X2 X2 我正在执行以下绘图例程 f axes pl
  • 使用光线投射时如何重新着色所有模型的零件?

    我有一个fanfare reality我的模型arView来自现实作曲家 我进行光线投射entity at location 并启用ModelDebugOptionsComponent visualizationMode lightingD