IFC纹理及着色器研究

news2024/11/13 8:52:15

最近,@yorgunkirmizi 讨论了纹理、着色器、纹理坐标以及所有此类内容在 IFC 中的工作原理。 我们在破译什么是可能的、什么是不可能的方面已经取得了一些重大进展,所以我想我应该打开这个线程,以便其他人也可以参与其中,或者至少密切关注进展。

在这里插入图片描述

推荐:用 NSDT设计器 快速搭建可编程3D场景。

据我们所知,纹理是 IFC 中最著名但不受支持的方面之一。 FZKViewer 有一些初步的纹理支持,例如,对于其中一种纹理类型,Jakob Beetz 已设法使其显示在原始对象上。 BlenderBIM 附加组件支持外部参考,这对于获得任意复杂的纹理、材质和照明来说有点作弊,因为它推迟了 IFC 外部的纹理定义。 因此,我们希望做得更好并为其提供适当的支持,其中还包括为行业其他公司提供测试用例,以便他们也能迎头赶上。

为了进行对比,让我们从如何使用表面颜色设计表示样式开始:

IfcShapeRepresentation --> IfcFacetedBrep <-- IfcStyledItem --> IfcSurfaceStyle --> IfcSurfaceStyleShading

IfcSurfaceStyleShading 包括基本视口颜色、漫反射分量、镜面反射分量和一些传输数据。 将其视为带有一些闪回的原则着色器,仍然允许选择“phong”作为着色器类型。

对于纹理,我们不使用 IfcSurfaceStyleShading,而是使用 IfcSurfaceStyleWithTextures。 然后,我们可以堆叠一系列 IfcSurfaceTexture 纹理。 将此堆栈视为组合起来创建颜色混合、漫反射贴图、高光贴图、凹凸贴图等的各种节点。

IfcShapeRepresentation --> IfcFacetedBrep <-- IfcStyledItem --> IfcSurfaceStyle --> IfcSurfaceStyleWithTextures -> IfcSurfaceTexture (L[1:?])

IfcSurfaceTexture 共有三种类型:Blobs、Images和Pixels。 这是引用原始图像数据的三种不同方法。 嵌入的 blob、指向图像的 URI 或像素 RGB 数组。 无论您选择哪种成像参考,所有 IfcSurfaceTexture 都具有相同的能力,可以在堆栈中与各种效果和参考纹理坐标相结合。

理论上,参数似乎有足够的灵活性来记录任何纹理系统,例如 Cycles 或 Eevee 节点,或建立您自己的约定。 然而,IFC 的纹理功能源自 ISO/IES 19775-1.2:2008 X3D 架构和基础组件第 2 版第 1 部分。因此默认设置是支持着色器在 X3D 中的工作方式。 简而言之:要了解 IFC 中的纹理,您首先需要了解着色器在 X3D 中的工作原理。

需要先阅读一些文档:

  • 阅读有关上述类别的所有 IFC 文档。 特别是 IfcSurfaceTexture。 不过,在阅读此列表中的其余文档之前,你还无法完全理解 IfcSurfaceTexture 的工作原理。
  • X3D 规范,请参阅第 18 条“纹理组件”,然后阅读整个部分,重点关注“多重纹理”节点。
  • 在你认为了解 MultiTexture 节点的工作原理之后,请通过阅读 此页面 来验证你对它的了解。 这是知识的金矿。
  • 此 存储库 包含每种不同着色组合的测试用例的示例 X3D 代码
  • 这个 演示查看器 理论上可以让你重新创建演示文件。 我得到的结果与基准屏幕截图不同,因此我向作者寻求帮助。
  • 感谢@Gorgious 发现了 这个宝石,Blender 已经有了一个 X3D 导入器/导出器。 然而,据我所知,它们不支持 MultiTexture,而这是理解纹理在 IFC 中如何工作的难题的关键。 然而,它确实涵盖了我们可以重用的像素纹理和 UV 贴图的代码。

@yorgunkirmizi 和我一直在进行这项练习:

  • 了解 X3D 规范和测试用例
  • 在 Blender 中重新创建测试用例,以了解这个看似过时的标准如何反映在更现代的渲染引擎中。 我们将为每个基本情况创建节点树,描述什么是可能的,什么是不可能的。
  • 将这些测试用例转换为 IFC 测试用例,展示如何在 IFC 中重新创建 X3D 定义和 Blender 材质节点树。
  • 确定现有 IFC 纹理的不足之处,以及 X3D 世界中现有的解决方案是否有帮助。
    创建设计人员可能使用的典型基本材质设置,例如基本漫反射贴图、PBR 工作流程中的所有贴图,并显示它们如何在 IFC 中表示。
  • 清楚地记录它的不足之处。 我想到的明显场景是程序纹理、黑体色温、RGB 曲线和 SSS。 其中一些可以通过简单地描述新约定(例如,只需添加 SSSMAP 并完成!)来相当容易地支持,以使其达到更新的标准。 对于其他人,我们可能会退回到外部定义,或者定义渲染引擎特定的约定。
  • 写代码! 使其发生! 纹理! 是的!

我们刚刚完成第 2 步,并开始第 3 步。


原文链接:IFC纹理及着色器 — BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/835639.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

恒运资本:货币调控精准有力 8月流动性合理充裕

8月3日&#xff0c;中国人民银行以利率投标方式展开30亿元逆回购操作&#xff0c;由于当日有1140亿元逆回购到期&#xff0c;公开商场完成净回笼1110亿元。 专家表示&#xff0c;为坚持流动性合理富余&#xff0c;估计央即将根据流动性供求和商场利率改变&#xff0c;灵敏运用多…

【雕爷学编程】MicroPython动手做(39)——机器视觉之图像基础

MixPY——让爱(AI)触手可及 MixPY布局 主控芯片&#xff1a;K210&#xff08;64位双核带硬件FPU和卷积加速器的 RISC-V CPU&#xff09; 显示屏&#xff1a;LCD_2.8寸 320*240分辨率&#xff0c;支持电阻触摸 摄像头&#xff1a;OV2640&#xff0c;200W像素 扬声器&#…

阿里云平台WoSignSSL证书应用案例

沃通CA与阿里云达成合作并在阿里云平台上线WoSign品牌SSL证书。自上线以来&#xff0c;WoSignSSL证书成为阿里云“数字证书管理服务”热销证书产品&#xff0c;获得阿里云平台客户认可&#xff0c;助力阿里云平台政府、金融、教育、供应链、游戏等各类行业客户实现网站系统数据…

美团前端研发框架Rome实践和演进趋势

本文整理自美团技术沙龙第76期《大前端研发协同效能提升与实践》&#xff0c;为大家介绍了美团到店前端研发框架Rome实践和演进趋势。 具体来讲&#xff0c;本文首先介绍了Rome整体的工程生态、演变路径、规模化升级以及工程框架外的开发辅助工具&#xff1b;第二部分&#xff…

主流CRM有哪些特点和优势?

现如今&#xff0c;CRM系统是企业实现数字化转型&#xff0c;提高销售收入的首选工具。但市场上有众多CRM品牌&#xff0c;每家都有自己的特点和优势&#xff0c;企业该如何进行选择&#xff1f;下面我们就来进行主流CRM系统比较&#xff0c;并说说什么CRM产品比较好? 主流CR…

控制器(IP盒子类似网关)收不到工位板的状态数据包的问题排查解决

控制器(IP盒子类似网关)收不到工位板的状态数据包 问题描述 如下图通信框图所示&#xff0c;控制器工位板程序通过RS422和控制器(类似网关)通信&#xff0c;控制器在将数据转发给Linux应用程序。 一开始设备装好&#xff0c;整个通信是没有任何问题的。 然后在很久之后&…

【C#学习笔记】装箱和拆箱

文章目录 装箱和拆箱性能消耗装箱拆箱 比较var&#xff0c;object&#xff0c;dynamic&#xff0c;\<T\>varobject\<T\> 泛型dynamic 装箱和拆箱 在讲引用类型object的时候&#xff0c;我们说它是万能的&#xff0c;却没说它万能在哪里。 除了object为每一种变量…

收集 301 医院 451 名老年冠心病患者数据,湖北麻城人民医院推出机器学习模型,准确预测患者一年内死亡率

内容一览&#xff1a;据国际糖尿病联盟 (IDF) 统计&#xff0c;2021 年中国糖尿病患者数量占全球 26%。而糖尿病患者血糖长期失控&#xff0c;有极高风险引起冠心病等并发症。近期&#xff0c;湖北省麻城市人民医院研究人员分析比较了多种模型&#xff0c;并用其中表现最优的机…

Scratch 之 两点之间距离的测算

1.前言 在Scratch中&#xff0c;对于坐标系上的两点&#xff0c;我们可以确定通过x坐标或y坐标之差确定两点横坐标或是纵坐标上的距离&#xff0c;那么如何知道两点之间的直线距离呢&#xff1f; 2.勾股定理 对于一个直角三角形&#xff0c;两条直角边的平方和等于斜边的平方&a…

电动自行车上架eBay的UL2849、16CFR1512测试标准

在奥运经济的带动下&#xff0c;今年以来运动自行车消费有较大幅度增长&#xff0c;其中高端消费者对进口自行车需求扩张&#xff0c;上半年竞赛型自行车进口量同比增长49.5%。另外&#xff0c;电助力自行车在国际市场也倍受追捧&#xff0c;国际自行车贸易总额的60%来自中国&a…

记一次ubuntu16误删libc.so.6操作的恢复过程

背景 操作系统&#xff1a;ubuntu16 glibc版本&#xff1a;2.23 修改原因&#xff1a; 经过一系列报错和手工构建之后&#xff0c;vulkansdk成功安装&#xff08;起码运行./vulkansdu成功&#xff09;&#xff0c;在进行./vulkaninfo进行验证时&#xff0c;报错&#xff1a…

SpringCloud-Hystrix服务熔断与降级工作原理源码 | 京东物流技术团队

先附上Hystrix源码图 在微服务架构中&#xff0c;根据业务来拆分成一个个的服务&#xff0c;服务与服务之间可以相互调用&#xff08;RPC&#xff09;&#xff0c;在Spring Cloud可以用RestTemplateRibbon和Feign来调用。为了保证其高可用&#xff0c;单个服务通常会集群部署。…

odoo16 上传/下载 文件接口的实现

突然有个需求说需要编写一个上传pdf 接口 首先需要准备如下 xx.xx模型 module 部分 如下&#xff1a; attachment_count fields.Integer(compute_compute_attachment_count, string附件数量, requiredTrue)def _compute_attachment_count(self):# 附件数量计算attachment_dat…

虹科干货 | DevOps 团队为什么独独青睐 Redis Enterprise ?

虹科干货 | DevOps 团队为什么独独青睐 Redis Enterprise &#xff1f; 快速部署是保障成功的 DevOps 的关键要素。虹科Redis Enterprise 提供了一种快速的数据库。 DevOps 团队面临的挑战 提高应用程序处理速度&#xff0c;赢得商业竞争 许多企业中&#xff0c;DevOps 团队&…

工厂模式:简化对象的创建过程

工厂模式&#xff1a;简化对象的创建过程 介绍 在软件开发中&#xff0c;对象的创建是一个常见的操作。通常情况下&#xff0c;我们可以直接使用 new 关键字来创建对象&#xff0c;但是在某些情况下&#xff0c;对象的创建过程可能会比较复杂&#xff0c;涉及到多个步骤或者依…

为生成式AI提速,亚马逊云科技Amazon EC2 P5满足GPU需求

生成式AI&#xff08;Generative AI&#xff09;已经成为全球范围内的一个重要趋势&#xff0c;得到越来越多企业和研究机构的关注和应用。纽约时间7月26日&#xff0c;亚马逊云科技数据库、数据分析和机器学习全球副总裁Swami Sivasubramanian在亚马逊云科技举办的纽约峰会上更…

React Native获取手机屏幕宽高(Dimensions)

import { Dimensions } from react-nativeconsole.log(Dimensions, Dimensions.get(window)) 参考链接&#xff1a; https://www.reactnative.cn/docs/next/dimensions#%E6%96%B9%E6%B3%95 https://chat.xutongbao.top/

程序员自由创业周记#5:加一上线

程序员自由创业周记#5&#xff1a;加一上线 这是一位程序员进行独立开发创业的记录&#xff0c;将分享创业过程中的所思所想以及收支明细。 充实 如果说程序员独立创业的成功率只有5%&#xff0c;那如果家里有一位3岁多还没上幼儿园的小朋友要照顾&#xff0c;成功的概率至少还…

通俗易懂web3.0

目录 前言一、WEB1.0二、WEB2.0三、WEB3.0区别最后 前言 大家好&#xff0c;我是清风。互联网连接了人与人&#xff0c;在过去的30年中&#xff0c;互联网技术不断进化、演化&#xff0c;向纵深发展&#xff0c;政治、经济、社交、生活、工作已经几乎离不开互联网。我们经历了…

软件测试面试【富途面经分享】

目录 一面面经&#xff08;1h&#xff09; 二面面经 一面面经&#xff08;1h&#xff09; 一、对白盒黑盒灰盒测试的理解 答&#xff1a; 1、黑盒测试就当整个程序是个黑盒子&#xff0c;我们看不到它里面做了什么事情&#xff0c;只能通过输入输出看是否能得到我们所需的来…