ODA Summit 2021 - Part 3: Beyond Data Interoperability

Open Design Alliance
4 Oct 202154:06

Summary

TLDR本视频讨论了3D扫描技术在建筑、工程和施工(AEC)行业中的应用,以及如何通过自动化提高数据处理效率。专家们讨论了从扫描到BIM的过程、激光扫描和无人机技术在项目中的应用,以及面临的挑战,如数据转换和模型创建。同时,介绍了ODA的可视化引擎,展示了其在工程设计中的作用,并通过案例研究和未来计划,展望了技术发展的趋势。

Takeaways

  • 🌐 越来越多的公司使用Kodi进行可视化和网络应用开发,并寻求解决复杂行业问题的创新技术。
  • 🏗️ AEC行业中扫描束(Scan to Beam)的应用正在增加,特别是在改造和翻新项目中。
  • 🏢 公司在项目中创建模型的需求不断增长,尤其是在扫描到BIM(Building Information Modeling)的应用上。
  • 📈 通过激光扫描和无人机技术,可以捕获大型场地的点云数据,提高项目执行的粒度视图。
  • 🔄 将点云数据转换为模型是一个挑战,尤其是在项目紧迫和资源有限的情况下。
  • 🤖 自动化在3D扫描中扮演着重要角色,未来可能会有算法帮助筛选和识别扫描数据中的相关元素。
  • 🛠️ 行业正在寻求一个“魔法按钮”,以高效地将点云数据转换为可用的模型。
  • 📱 激光扫描技术的发展使得数据消费变得更加便捷,如使用平板电脑和智能手机进行室内设计。
  • 🎥 Oda的可视化引擎允许在任何平台上为工程应用添加专业的2D或3D图形。
  • 🔄 通过集成Oda Visualize,MSI Design在其旗舰计算机设计应用中实现了性能提升和开发成本降低。
  • 🚀 未来计划包括在Oda Visualize中添加反射平面支持、快速对象转换和亚像素形态学抗锯齿等高级功能。

Q & A

  • 为什么越来越多的公司选择使用Kodi进行可视化和网络应用开发?

    -Kodi因其强大的可视化能力和灵活性,被越来越多的公司用于解决复杂的行业问题,包括数据互操作性之外的挑战。

  • 在AEC行业中,扫描到BIM的作用是什么?

    -扫描到BIM在AEC行业中的作用主要是为了获取现有建筑的精确数据,以便在进行改造或翻新时,能够更好地理解现有结构和流程,并有效地整合新的设计和工艺。

  • Walsh公司在处理大型升级项目时,面临的最大挑战是什么?

    -Walsh公司在处理大型升级项目时,面临的最大挑战是如何在现有设施中整合新的管道、过滤系统和工艺流程,并确保这些新元素能够与当前的流程和程序顺利对接。

  • 在设计和施工过程中,激光扫描的主要目的是什么?

    -在设计和施工过程中,激光扫描的主要目的是捕获现有建筑的实际建成状态,为后续的设计和施工提供准确的数据支持。

  • 为什么自动化在3D扫描中扮演着重要角色?

    -自动化在3D扫描中扮演着重要角色,因为它可以帮助从扫描数据中过滤出不必要的信息,提高数据处理的效率,并且有助于将扫描数据快速转换为可用的模型。

  • ODA的可视化引擎AudioVisualize提供了哪些功能?

    -ODA的可视化引擎AudioVisualize提供了专业级的2D和3D图形添加功能,能够在任何工程应用程序和平台上使用,包括对点云、网格或BIM模型的高质量可视化。

  • 为什么ODA的可视化技术对于AEC行业来说是一个重要的进步?

    -ODA的可视化技术对于AEC行业来说是一个重要的进步,因为它提供了一种优化的方式来处理和呈现复杂的模型数据,同时支持跨平台使用,有助于提高设计和施工的效率。

  • 在集成ODA Visualize时,IMsi Design遇到了哪些挑战?

    -在集成ODA Visualize时,IMsi Design面临的挑战包括更新渲染引擎以提高性能、降低开发成本、改善客户体验,并且需要在不同的硬件平台上实现渲染的可扩展性。

  • ODA Visualize的哪些特性使得它在设计审查中特别有用?

    -ODA Visualize的高质量可视化、快速选择和高亮显示功能、以及对多种设计格式的支持,使得它在设计审查中特别有用,能够帮助用户有效地验证项目多个方面并进行沟通协作。

  • Open Cloud平台如何处理复杂的文件和数据?

    -Open Cloud平台通过提供参考API、可视化.js库、用户管理API、角色基础API、文件操作API和自定义作业API等工具,能够有效地处理复杂的文件和数据,支持从文件中提取几何或属性数据,并允许用户执行自定义作业来提取额外信息。

Outlines

00:00

🌐 Kodi的多元化应用与扫描到BIM的讨论

本段介绍了越来越多的公司正在使用Kodi进行可视化、网页应用开发,以及寻求解决复杂行业问题的创新解决方案。特别强调了扫描到BIM(建筑信息模型)技术在AEC(建筑、工程、施工)行业中的应用,并提到了一个专门讨论这一技术在行业内应用的小组讨论。提到该讨论的完整版本可在YouTube频道上找到,强调了其提供的深入见解的价值。

05:02

📊 3D扫描与模型转换的行业挑战

这一部分深入探讨了3D扫描技术在不同行业项目中的实际应用,尤其是在改造和维修项目中。讨论了从传统的激光扫描到使用无人机进行大范围扫描的技术进步,以及这些技术如何帮助从实际场地获取精确的数据。专家们分享了他们在使用点云数据和3D模型转换过程中面临的挑战,包括数据的大量性和处理这些数据的高复杂性,以及如何通过自动化和算法改进来解决这些问题。

10:04

🔍 在行业中推广3D扫描的挑战与机遇

讨论了在AEC行业中推广3D扫描技术面临的挑战,特别是高成本和高技术门槛限制了更广泛的应用。专家们讨论了如何通过技术创新和解决方案开发来降低这些障碍,例如通过开发新工具和平台来简化数据捕捉和处理流程。同时,指出了在个人和小规模项目中应用3D扫描的潜力,强调了行业内合作和知识共享的重要性。

15:06

🛠 ODA Visualize技术的实际应用案例

介绍了ODA Visualize技术在工程设计和CAD软件开发中的应用,通过IMS Design的案例展示了如何将ODA Visualize集成到他们的TurboCAD产品中。讨论了这一技术如何帮助改善渲染性能,提升用户体验,并支持多种硬件平台。此外,分享了开发过程中的一些关键考虑点,包括与ODA团队的合作,利用源代码访问和不同版本库的同时使用。

20:14

🌟 ODA Visualize的动画和测量功能

这一部分重点介绍了ODA Visualize的动画API和测量功能,展示了如何在视觉化场景中对模型进行动画处理和精确测量。详细解释了这些功能如何帮助设计应用程序用户以更直观、更灵活的方式呈现和分析模型数据。同时,讨论了高级自定义和性能优化技术,如使用字体缓存和减少GPU调用来提升渲染性能。

25:16

🚀 ODA Visualize的未来发展方向

讨论了ODA Visualize技术未来的发展计划,包括增加反射平面支持、改进对象变换处理和引入子像素抗锯齿技术。此外,展望了新的文件格式VSFX的开发,该格式旨在减小文件大小并支持高效的数据流式传输。提到了基于强烈市场需求,开发针对Open IFC Viewer的插件系统的计划,以便更好地支持AEC行业用户。

30:16

📈 ODA在云基础设施和WebAssembly应用中的使用

介绍了ODA技术在云基础设施和WebAssembly应用开发中的实践案例。首先,通过Lunar Engineering的EDMS系统展示了如何使用ODA技术管理、审核和协作处理工程文件。随后,详细介绍了Open Cloud解决方案,强调了其在处理复杂CAD和BIM文件、优化数据存储和执行定制作业方面的能力。最后,通过Google V8团队的介绍,探讨了在Chrome浏览器中调试和性能分析WebAssembly应用的方法。

Mindmap

Keywords

💡可视化

可视化是指将数据或模型通过图形界面展示出来,使得用户能够直观理解复杂信息。在视频中,可视化技术被用于工程设计和建筑信息模型(BIM)中,以帮助专业人员更好地理解和分析项目。例如,通过使用ODA的可视化引擎,可以将复杂的BIM模型以2D或3D图形的形式展现给客户和团队成员,从而快速理解空间布局或进行简单测量。

💡激光扫描

激光扫描是一种测量技术,通过发射激光束并测量其反射回来的时间来确定物体的形状和位置。在视频中,激光扫描被广泛应用于建筑、工程和施工(AEC)行业,用于创建现有条件的详细模型,这些模型可以用于设计、施工和维护等多个阶段。

💡点云数据

点云数据是一种由大量三维点组成的数据集,每个点都有自己的位置坐标。这些点通常由3D扫描设备捕获,用于表示物理对象或环境的三维模型。在视频中,点云数据被用于记录建筑信息,尤其是在激光扫描和无人机测绘中。

💡建筑信息模型(BIM)

建筑信息模型(BIM)是一种数字化工具,用于表示和管理建筑和基础设施项目的物理和功能特性。BIM模型包含了建筑物的详细信息,如材料、构件尺寸和成本等,这些信息可以在设计、施工和运营过程中使用。

💡设计审查

设计审查是指在项目开发过程中对设计方案进行的一系列评估和验证活动,目的是确保设计满足所有技术和功能要求。在视频中,设计审查涉及到使用专业软件工具来检查和分析BIM模型,以验证项目的多个方面。

💡WebAssembly

WebAssembly(简称Wasm)是一种为网络浏览器设计的低级字节码格式,它允许在网页上以接近原生性能运行编译后的代码。这种技术使得C、C++等语言编写的程序能够高效地在网页中运行,而不需要解释执行。

💡模型转换

模型转换是指将一种格式的三维模型数据转换成另一种格式的过程。在AEC行业中,这通常涉及到将扫描得到的点云数据或BIM模型转换成其他软件或平台能够识别和处理的格式。

💡自动化

自动化是指使用技术来执行原本需要人工操作的任务。在视频中,自动化特别指的是在3D扫描和模型创建过程中减少人工干预,通过算法和软件自动处理数据和执行任务。

💡开放BIM标准

开放BIM标准是指一系列公开的、用于建筑信息模型数据交换和协作的标准规范。这些标准允许不同软件平台之间共享和利用BIM数据,促进了行业内部的协作和数据互通。

💡云计算

云计算是一种通过互联网提供计算资源(如服务器、存储、数据库、网络、软件、分析等)的服务模式。它允许用户按需访问这些资源,而无需在本地部署和维护硬件和软件。

💡性能优化

性能优化是指改进软件或系统以提高其运行效率和响应速度的过程。在视频中,性能优化涉及到对WebAssembly应用程序进行调试和分析,以发现并解决性能瓶颈。

Highlights

越来越多的公司今天正在使用Kodi进行可视化,他们正在使用Kodi进行Web应用开发,并且他们正在寻找解决其他复杂行业问题的解决方案。

本次会议的这一部分致力于超越数据互操作性的早期技术。

扫描到BIM在建筑信息模型中的应用正在增加,每个项目现在都有某种形式的扫描。

在建筑生命周期中,人们希望了解扫描的前端设计和施工过程的动机。

激光扫描工作过去主要集中在捕获建筑物的实际情况,例如大型机场项目。

由于无法信任建筑物的历史建筑文档,人们希望通过扫描来确认建筑物的实际状况。

在小型空间的3D扫描中,无人机的使用正在增加,但目前还没有一个工具能够帮助小型项目进行3D扫描。

自动化在3D扫描中的角色正在发展,尤其是在处理扫描数据和转换模型方面。

目前,行业面临的挑战是如何有效地将点云数据转换为模型,这是许多人的障碍。

ODA正在尝试提供填补这些空白的核心技术,而不是等待每个单独的供应商和行业部门自己解决。

可视化在工程设计中起着关键作用,无论是点云、网格还是BIM模型。

ODA的可视化引擎允许在任何平台上为任何工程应用添加专业的2D或3D图形。

通过集成ODA可视化,MSI设计提高了其TurboCAD系列产品的渲染性能和质量。

ODA可视化引擎的集成使得在不同的图形系统上运行时都能提供最佳的用户体验。

ODA可视化引擎支持多种渲染设备,这意味着客户端应用程序可以运行瓦片打印或PDF导出,同时与屏幕渲染设备一起使用图形系统缓存以获得最佳性能。

ODA可视化引擎现在支持在GDI设备中进行透明度处理,这可以用于打印和渲染。

ODA可视化引擎的未来计划包括添加对反射平面的支持,以及为动画和快速对象变换实现子像素形态学抗锯齿。

Transcripts

play00:02

[Music]

play00:12

more and more companies today

play00:15

are using kodi for visualization they

play00:18

are using kodi for web application

play00:20

development and they are looking to idea

play00:22

for solutions to other complex industry

play00:25

problems this last part of our summit is

play00:28

dedicated to early technologies that go

play00:32

beyond data interoperability we'll start

play00:34

this section from a panel discussion

play00:37

about the role of scan to beam

play00:40

in the aec industry in the scope of our

play00:43

summit you can see a part of this

play00:46

discussion with bright insights but i'd

play00:48

like to assure you that it's worth

play00:50

watching a full version available on our

play00:53

youtube channel

play00:57

[Music]

play01:04

you know looking at your practices in

play01:06

general

play01:09

how often is your company seeing

play01:10

projects where there is a need to create

play01:13

models from these scans and the point

play01:15

cloud data and there is definitely an

play01:18

increase in

play01:20

demand for the use of this it's to the

play01:22

point that basically every project now

play01:24

in the last couple years has had some

play01:26

form of scanning whether it's

play01:28

to um

play01:30

scan to bim

play01:31

the last project was a substation in a

play01:33

basement uh

play01:36

with complex floor and ceiling and wall

play01:38

condition where we see the greatest

play01:40

value is in those retrofits those

play01:42

renovations um

play01:44

walsh has three different verticals it's

play01:46

our building group civil group and our

play01:48

water group and

play01:49

water time and time again when you're

play01:52

massive upgrades how are you

play01:54

retrofitting this existing facility with

play01:56

new pipings new filtration systems new

play01:58

processes so

play02:00

really having a granular view on how

play02:03

this is going to integrate into the

play02:04

current process and procedures is very

play02:06

difficult and you know can go out there

play02:08

and take a tape measure and measure it

play02:10

but you know that really doesn't provide

play02:12

um

play02:13

great hindsight uh when you're throwing

play02:15

these models together um as well as how

play02:18

you're gonna get this information or

play02:20

this equipment into these spaces

play02:23

yeah for us it's it's very similar

play02:26

we've

play02:27

deployed point cloud technology for the

play02:30

last decade

play02:32

video via either laser scanning directly

play02:34

or increasingly with with drones to

play02:37

capture the larger type sites and

play02:40

i tend to look at it from the building

play02:42

life cycle perspective so i always like

play02:44

to start with why

play02:46

why do people want to do the scan

play02:49

in the front end of the design

play02:51

construction process you have the as

play02:53

built condition

play02:54

so a lot of the

play02:56

front end laser scanning work that we've

play02:59

done in the past has has been around

play03:01

capturing the ass built condition for

play03:04

example we did mem international airport

play03:07

which had an extremely large footprint

play03:10

you know as an airport of course and it

play03:12

was built

play03:13

where nobody really trusts the as-built

play03:15

documents because they go i need 10 20

play03:18

30 generations you know they're like

play03:20

you know

play03:21

you got you want the 1975 version or you

play03:24

want the 1982 or do you want the 1994

play03:28

and they recommend you look at all of

play03:30

them because they all have different

play03:31

pieces of information on them but none

play03:34

of them have the truth

play03:35

so

play03:36

because you can't trust the as built

play03:39

documents that we're inheriting from

play03:41

the history of that building

play03:44

and people want the confidence to truly

play03:45

know what's out there we've been

play03:47

scanning to document the as built

play03:50

condition something for us that that is

play03:52

important is the scale that we have some

play03:54

projects that you know we have towers

play03:56

that we want to retrofit we're

play03:58

definitely going to do that but there is

play04:00

also a niche in in a a practice area

play04:03

that we call workplace

play04:04

and and there is so many smaller spaces

play04:06

and uh and we see the drones as gene

play04:09

mentioned

play04:10

we see the point clouds we see all type

play04:12

of 3ds kind but there is no um a tool

play04:15

that help

play04:17

that small ditch when you have to 3d

play04:19

scan something you don't want to send

play04:20

your team there

play04:22

but you need to capture the space so

play04:25

there is a lot of opportunities in there

play04:26

in the in the field we have seen

play04:29

increasingly um i would say probably

play04:33

a hundred percent of the projects that

play04:35

we have that are existing conditions

play04:37

they're doing 3ds kindly maybe you can

play04:39

uh help also describe what is your

play04:42

process i mean are you

play04:43

are you going out and doing the laser

play04:46

scanning yourself with your own units

play04:47

are you hiring somebody third party to

play04:49

do it are you then getting the point

play04:51

cloud data and and translating that

play04:53

yourself or is that also a third party

play04:55

service what you know what kind of

play04:57

things are you relying on depending on

play04:59

the complexity of the project

play05:02

the availability of our scanners you

play05:03

know that's that's always a

play05:05

difficult thing to approach we have

play05:06

multiple scanners within our

play05:08

organization but

play05:10

you know we have a retrofit project

play05:11

comes up you know that's that's just

play05:12

like a full-time fte that's sitting

play05:14

there and that's being leveraged on that

play05:16

project

play05:17

one of the banes of our existence is

play05:19

when we hear we need to perform laser

play05:21

scanning on that project and then the

play05:23

first question that comes to mind are we

play05:25

creating the model oh no the architect's

play05:27

creating the model no problem we'll go

play05:29

scan that that's we're completely fine

play05:31

with scanning that project because

play05:33

that's the easy part scanning and

play05:34

registering those points no problem uh

play05:37

the complexity of really developing that

play05:39

model that's time consuming and uh

play05:42

unfortunately these days in the industry

play05:44

it's you're closing up one project

play05:45

starting up another project

play05:46

simultaneously and bidding a project in

play05:48

between the two of those so

play05:50

it's very difficult to kind of stop do

play05:53

all those iterations and go through it

play05:54

from the architect's standpoint um we've

play05:57

seen a couple different variations we've

play05:59

never done our own scanning we're

play06:00

usually contracting out it's either with

play06:03

the general contractor

play06:06

or it is coming from an outsource

play06:09

firm of some sort

play06:11

and then from that point once we've done

play06:12

the scan

play06:14

we have both modeled in-house and we've

play06:17

also outsourced the model or the general

play06:19

contractor has provided the model from

play06:20

their scan a big point it's it's

play06:22

something we've toyed with as far as the

play06:24

the model conversion

play06:26

it's something that we used to

play06:29

handle all of that in-house

play06:31

the software years ago has been

play06:33

developing where there's

play06:35

automatic feature extraction

play06:38

but what we found is

play06:40

particularly with piping type systems

play06:43

the software will create those elements

play06:45

but then you spend just as much time qc

play06:48

and making sure everything fits properly

play06:50

that

play06:51

we weren't really seeing the the

play06:52

efficiencies to make that process go and

play06:55

that's that's kind of why we're here

play06:57

talking about this the

play06:59

industry's been chasing this magic

play07:00

button where point cloud

play07:03

allows us to capture more data than

play07:05

we've ever had on the construction

play07:07

site and then with drones as well

play07:10

but the ability to efficiently convert

play07:12

that to a model is

play07:14

is something that really

play07:16

holds a lot of people back

play07:18

so what will be the role of automation

play07:21

in 3d scanning because we all face the

play07:23

same challenge when we go and we scan

play07:26

we get a lot of information that

play07:29

we probably don't need so for example um

play07:32

i get a 3d scan i come with a bunch of

play07:34

piping that has they're not really

play07:36

relevant for the

play07:38

let's say the scope of work that we're

play07:40

doing i wonder if in the future some

play07:42

kind of algorithm is going to start

play07:45

understanding

play07:46

what is piping what is a wall you know

play07:48

it should be something that

play07:50

start filtering those things we we have

play07:52

seen some automation with you understand

play07:55

what the what type of geometry is there

play07:57

and say okay this could be a wall and it

play07:59

and it throws a wall there

play08:01

um sounds like cost and the time

play08:04

associated with a making the scans and b

play08:07

making those conversions is a very big

play08:09

deal

play08:10

uh you know obviously not every

play08:13

not every type of stakeholder you know

play08:15

if you're an architect and you're

play08:16

focusing on design

play08:18

that may not be feasible within your

play08:20

firm or you know sounds like on the

play08:23

contracting side you figure out ways to

play08:25

make it work because

play08:27

that is a part of your process that is a

play08:29

fundamental part of what you do and

play08:31

being able to do the scanning but maybe

play08:33

conversion isn't always necessary or if

play08:35

you could get conversion on top of that

play08:37

as a

play08:38

as an easy gain then it would be much

play08:40

easier to justify

play08:42

you know so so oda is is

play08:45

you know in this this realm of trying to

play08:48

provide sort of these core technologies

play08:51

that fill these gaps um but what do you

play08:53

think about that approach i mean does it

play08:54

does that seem to make sense to you

play08:56

rather than sort of waiting for

play08:58

you know each of the individual vendors

play09:00

and sectors to just sort of figure it

play09:02

out

play09:06

well yeah i think there's a need so it's

play09:08

interesting because um one part of this

play09:10

is how do you consume the scan data

play09:12

right

play09:13

one of the issues that we've always had

play09:15

of course you know when you talk about

play09:17

lasers kind of an airport you can

play09:19

imagine how difficult this is to consume

play09:22

in every sense hardware

play09:24

just transferring the information making

play09:26

accessible making it available bringing

play09:29

it into other systems so we obviously

play09:31

need more optimized ways of being able

play09:35

to make that data available in a wide

play09:37

range of platforms in a wide range of

play09:40

environments everything

play09:42

from uh you know tablet computer all the

play09:45

way up to your smartphone you're seeing

play09:48

movement on the laser scanning side of

play09:50

things you know it's everyone's got the

play09:51

newest latest and greatest cell phone or

play09:53

ipad and they now all of a sudden have

play09:56

laser scans on them nobody knew what the

play09:58

heck they were going to do with it you

play09:59

know it was for the ar so you can have a

play10:01

little dancing rhino on your desk but

play10:03

then people in our industry started

play10:05

being like wait a second i can now

play10:07

work with an interior designer i could

play10:09

scan my apartment send it off to

play10:10

interior designer and get a beautiful

play10:12

decoration of my apartment well

play10:15

if we could do that in our personal

play10:16

level why why aren't we trying to

play10:18

holistically approach this in our

play10:20

industry to make it easier if i can go

play10:21

out there with an ipad all my sub or all

play10:24

my formative ipads out there let's start

play10:26

scanning this let's start tying this

play10:27

into different third-party solutions uh

play10:30

procure not procurement uh production

play10:32

tracking things like that so

play10:34

i think the sky's the limit when it

play10:36

comes to developing solutions for this

play10:38

workflow

play10:39

because it's an underutilized and the

play10:41

burden of entry is so high that not

play10:44

enough people are playing here yet so

play10:46

it's kind of a

play10:47

majorly under underutilized uh principle

play10:50

in our industry and i i think it's it's

play10:52

worthwhile and it's worth the investment

play10:54

to start understanding what it could do

play10:55

for you and your projects to your point

play10:57

i i think that's definitely somewhere

play10:59

where the industry as a whole would

play11:01

definitely benefit there are a lot of

play11:04

different groups out there that have

play11:05

different tools and

play11:07

i'm sure like most of you we we have to

play11:10

be pretty agnostic we have to use a lot

play11:12

of different tools there's a lot of

play11:14

different conversions

play11:16

to get what you need

play11:18

each has their strengths have their

play11:20

weaknesses

play11:21

and we're constantly going through that

play11:23

process on

play11:24

on the scanning and software side just

play11:26

to see

play11:27

okay where's the industry at who's who's

play11:29

bringing new

play11:30

new technologies new potential to it but

play11:32

the ability to

play11:34

bring all those collective ideas

play11:36

together in a simple

play11:39

efficient solution i i think is

play11:42

an amazing challenge but definitely

play11:44

something that that would benefit the

play11:46

whole industry i will follow up with

play11:48

what you're saying james

play11:49

and i see the same thing so one would be

play11:51

the part of visualization that gives

play11:53

access to clients and everybody in the

play11:55

team to really quickly understand the

play11:57

space or even take a simple measurement

play11:59

you know

play12:00

now to be able to access that data it is

play12:03

pretty heavy and it is hard to to

play12:05

anybody in the team to

play12:07

just open and take some quick

play12:08

measurements

play12:09

and the other thing would be translation

play12:11

so how you take all that point point

play12:13

cloud and you make it accessible to

play12:15

whatever platform you're going to use it

play12:16

you know we cannot restrict our

play12:19

our users or whoever is is working with

play12:22

this data to only work in one specific

play12:24

brand

play12:25

software so we cannot say well you if

play12:27

you get this one you use this tool to

play12:30

translate the data and now you need to

play12:31

use auto a revit you know or you need to

play12:35

use um archicad so it needs to be

play12:38

something called like ifcs you know that

play12:40

is is it can work across any platform

play12:42

and you can open this this file in

play12:45

sketchup if you want a rhino and you can

play12:47

get the same precision

play12:51

[Music]

play13:00

visualization plays a key role in

play13:02

engineering design

play13:03

either your data is point cloud air mesh

play13:06

or a beam model

play13:08

now it is time to take a closer look at

play13:10

oda's professional visualization engine

play13:13

[Music]

play13:19

audiovisualize allows you to add a

play13:21

professional 2d or 3d

play13:24

graphics to any engineering application

play13:27

on any platform

play13:29

let's let's take a closer look at what

play13:31

this technology can do for you and i

play13:34

will start from a success story provided

play13:36

by one of our oldest founding member msi

play13:39

design

play13:40

last year they have integrated our

play13:43

visualize to their flagship computer

play13:45

design application

play13:47

and in the context of these samples

play13:49

i would like to draw attention to the

play13:51

creative approach that allows to emulate

play13:53

feature which is only in our future

play13:55

plans here i mean reflection plane

play13:58

next demos illustrates how visual styles

play14:02

can create an impressive visual

play14:03

representation even for a simple model

play14:07

changing of a few visual style options

play14:09

like h model or age crease angle can

play14:12

significantly alter the rendering and

play14:15

add different effects to the final model

play14:17

representation now msi design

play14:20

will tell you more about the experience

play14:22

with oda visualize

play14:27

[Music]

play14:34

hello i'm tim olsen vice president

play14:36

development at imsi design i've had the

play14:39

opportunity to be involved with cad

play14:40

development since the early 80s close to

play14:43

40 years now

play14:44

and throughout that time visualizing cat

play14:46

data such as text dimensions line styles

play14:50

wireframe and 3d facet data have been a

play14:53

constant challenge

play14:54

it's been a challenge because of the

play14:56

changes we've seen in the underlying

play14:58

software and hardware interfaces

play15:00

and driven by our customers ever

play15:03

demanding need to support larger and

play15:05

larger files

play15:07

today i'm going to share with you our

play15:09

experience of integrating oda visualize

play15:11

with our turbocad family of products

play15:14

imsi design has been developing desktop

play15:16

and mobilecad products since 1983.

play15:19

we have distributed over 16 million

play15:21

products during that time targeting

play15:23

consumer as well as professional cad and

play15:25

aec users on windows mac android and ios

play15:30

platforms

play15:31

our products include turbo cat design

play15:34

cad floor plan and our home design

play15:36

architectural series our turbocad for

play15:38

windows product is our first application

play15:40

to integrate visualize

play15:42

this product has extensive 2d drafting

play15:44

annotation surface and solid modeling

play15:47

geometric constraints

play15:48

parametric design and an extensive suite

play15:51

of interoperability solutions turbocat

play15:54

is used by our customers on a wide

play15:56

variety of platforms

play15:58

ranging from integrated gpus

play16:00

to high-end dedicated boards such as the

play16:03

nvidia geforce

play16:04

we need our rendering implementation to

play16:07

scale with the platform providing all of

play16:09

our customers with the best possible

play16:11

experience

play16:12

our goal with visualize was to update

play16:14

our rendering engine to improve

play16:16

performance reduce our development costs

play16:18

by consolidating rendering engines and

play16:20

to improve our customers experience

play16:23

our first product to integrate visualize

play16:25

with is turbocad

play16:27

turbocad previously supported four

play16:29

graphic engines including gdi opengl

play16:32

lightworks and red sdk

play16:34

our render manager wraps these engines

play16:36

under one layer our approach was to add

play16:39

visualize over a 12-month development

play16:41

period as a fifth rendering engine

play16:43

through two development phases

play16:45

phase one we were to duplicate the

play16:47

current functionality into the turbocad

play16:50

2021 release

play16:52

and phase two exposed new features in

play16:55

the turbocad 2022 release turbocad 2021

play16:59

with visualize was released last spring

play17:01

with positive feedback from our

play17:02

community of users

play17:04

we observed two areas of notable

play17:06

improvements in performance and quality

play17:09

rewarding performance we saw up to 10x

play17:12

an order of magnitude performance

play17:13

updates for wireframe and 3d facet type

play17:17

data on high-end graphics ports

play17:19

and 2-3

play17:20

x performance on lower end boards we

play17:23

also saw some unexpected quality

play17:25

improvements regarding anti-aliasing and

play17:28

ambient inclusion

play17:29

regarding anti-aliasing we are able to

play17:31

expose methods and parameters to

play17:33

fine-tune those jaggies out of both

play17:35

wireframe and 3d facet type data

play17:39

and with respect to screen

play17:41

space ambient occlusion we are able to

play17:43

expose some simple lighting setups for

play17:45

users to quickly get more realistic

play17:48

renderings

play17:51

next up are four things we believe

play17:52

helped us integrate visualize into our

play17:55

turbocad product

play17:56

first the oda visualized team was very

play17:59

supportive in answering our questions

play18:01

providing suggestions and listening to

play18:04

our suggestions

play18:05

i encourage anyone getting involved with

play18:07

oda components to review the example

play18:09

code use the timeline help and get

play18:12

involved with the user form second

play18:15

as a founding member we have access to

play18:16

source code

play18:18

source code provided us with the ability

play18:20

to step through the debugger inside the

play18:22

example code as well as through our code

play18:24

and provided us with additional insight

play18:26

into the workings of visualize

play18:30

third the ability to use two different

play18:32

versions of odi libraries together in

play18:34

one application this enabled us to

play18:37

update visualize in a monthly manner

play18:40

without affecting the base oda library

play18:43

which is modified source requiring more

play18:45

time to update for us

play18:47

and lastly our lead engineer vlad veslov

play18:51

was able to leverage his prior

play18:53

experience with rendering engines

play18:54

towards visualize

play18:56

we found implementing visualize

play18:58

consistent with other rendering engine

play19:00

concepts with turbocad 2021 we

play19:04

duplicated our existing rendering engine

play19:06

to include oda visualize with turbocad

play19:09

2022 we extend our rendering engine with

play19:12

new features based on visual styles

play19:15

new visual styles such as x-ray

play19:17

conceptual and gray along with

play19:19

customizable parameters will allow more

play19:21

ways for our customers to view complex

play19:24

data

play19:25

in closing our original goal was to be

play19:29

as fast or better than our competitors

play19:31

with our rendering engine while

play19:33

improving the overall customer

play19:35

experience

play19:36

with the help of oda visualize we

play19:38

believe we have accomplished that goal

play19:40

going forward it is our intention to

play19:42

leverage visualize into more of our

play19:44

products including our macbase products

play19:47

i look forward to our development team

play19:49

focusing more on creating unique product

play19:51

features

play19:52

where oda components such as visualize

play19:54

are a key component of that strategy

play19:57

thank you

play19:58

now we are moving forward with our

play19:59

presentation there are many interesting

play20:01

things ahead of us

play20:04

[Music]

play20:14

the animation api allows objects within

play20:16

a visualized scene to be animated

play20:20

entity animation allows translation

play20:22

rotation and scaling to be applied to

play20:24

the objects in the model

play20:26

objects in oda visualize are stored in a

play20:29

hierarchical structure and the animation

play20:31

api takes into account this hierarchy

play20:34

for example we can specify one animation

play20:36

for an entity and another one for its

play20:39

sub-entity and the resulting sub-entity

play20:41

animation will be a combination of both

play20:43

its own and its parent animations

play20:46

view animation introduces a new camera

play20:49

object that contains properties similar

play20:51

to the view

play20:53

using the camera object you can create

play20:55

things like walkthrough animations for

play20:57

complex building models

play21:00

now let's talk about measurements

play21:02

the ability to select and measure parts

play21:04

of a model is a popular feature for many

play21:07

types of design applications

play21:09

for convenient management visualize

play21:11

supports options like nearest point

play21:14

center point starter endpoints and so on

play21:18

also we have added measurement 2 to our

play21:20

sample applications which can be used as

play21:23

a base for the measurement support to

play21:25

your client applications

play21:28

[Music]

play21:52

let's talk about highlighting

play21:53

customization and sun graph highlighting

play21:56

customization provides a way to control

play21:58

edge and face style color masks for

play22:01

highlighted objects transparency

play22:04

displaying of the lines or contours and

play22:07

drawing order of the highlighted

play22:10

geometry can be also controlled

play22:12

in addition we can use different

play22:14

highlighting styles in a rendering stand

play22:17

different parts of the model can be

play22:19

highlighted using different styles to

play22:22

meet the needs of even the most complex

play22:24

design applications similarly this

play22:27

technique can be used to highlight

play22:29

different kinds of objects by most fit

play22:31

highlighting style the next block of our

play22:34

presentation will be devoted to the

play22:36

visualized sun graph

play22:38

it uses background processing of

play22:40

geometry data to minimize number of gpu

play22:43

calls and optimize rendering performance

play22:46

we actively developing and enhancing

play22:49

this feature visualize uses a triotype

play22:52

fonts cache and block references cache

play22:54

to optimize vectorization performance

play22:56

and reduce memory usage for complex

play22:59

models

play23:00

in the past this reduced memory usage

play23:02

has come at the cost of slower rendering

play23:05

performance this year we have improved

play23:08

our sun graph to work seamlessly with

play23:10

our font and block cushion giving

play23:13

reduced memory usage without any serious

play23:16

loss in the rendering performance

play23:19

another critical some graph bottleneck

play23:21

is overall memory usage we have reduced

play23:24

some graph memory usage by eliminating

play23:27

intermediate geometry data which was

play23:29

previously kept to facilitate selection

play23:32

and highlighting processes

play23:34

this table shows the benefits of this

play23:36

work for different models

play23:40

[Music]

play23:44

during class here we have significantly

play23:46

improved the screen space ambient

play23:48

occlusion as sao it is a rendering

play23:50

technique which allows to add an effect

play23:52

of global illumination to the scene

play23:55

first of all now we are using enhanced

play23:57

blur to avoid shadow noise

play23:59

in addition the ssao can now be adjusted

play24:02

for the different zoom levels

play24:04

either manually or in automatic mode

play24:07

when realizing kfc in many cases the

play24:10

full ifc model is divided into a set of

play24:12

separate files electrical mechanical

play24:15

plumbing

play24:16

open fc viewer is now able to load all

play24:19

these files into a single scene

play24:22

all these modules can be manipulated in

play24:24

object explorer pane

play24:26

we can control visibility performance

play24:28

action and many other operations like

play24:30

for example collision detection between

play24:32

objects from different models

play24:35

for example we can test that analytical

play24:36

equipment

play24:38

doesn't collide with plumbing

play24:40

also we have added the new functionality

play24:42

to the collision detection pallet

play24:44

to allow the transparency of the

play24:46

collided objects to be customized this

play24:48

year we have continued to work on apple

play24:50

metal renderer fios and mac platforms

play24:53

since metal device invokes the similar

play24:55

code base with opengls 2 device

play24:58

we have work on a more deep unification

play25:00

of the data providing for these two

play25:02

devices

play25:03

also we have add new functionality to

play25:05

the metal device

play25:06

like support of the substantial

play25:08

attachment support of the index geometry

play25:11

cutting planes

play25:12

another important feature is the frame

play25:14

buffer support

play25:15

one of the benefits from the frame

play25:17

buffer support is the correct order

play25:19

independent transparency even in

play25:20

multi-target mode

play25:22

our future planes with metal device

play25:24

includes the transferring of the

play25:26

openjlis to geometric shaders to the

play25:28

metal as far as implementation of the

play25:30

advanced features like screen space

play25:32

event occlusion

play25:33

fast proximity anteriorizing and more

play25:37

[Music]

play25:42

audio visualize now supports multiple

play25:44

rendering devices for a single database

play25:47

this means that client application for

play25:49

example are able to run tile printing or

play25:52

pdf exporting with optimal performance

play25:54

using graphic system cache together with

play25:57

on-screen rendering device previously

play25:59

this was not possible another small

play26:01

enhancement is ability to draw

play26:03

background texture on faces in hidden

play26:05

line mode

play26:07

this enhancement can be used to create

play26:09

an effect when background is visible

play26:11

through geometry in contrast with

play26:14

classic hidden line where a constant

play26:16

background color is used to fill

play26:19

geometry the next item involves raster

play26:22

images previously

play26:24

we could select a raster image only by

play26:26

clicking on its border highlighting is

play26:29

also applied only to raster image

play26:31

borders

play26:32

and now audio visualize provides an api

play26:35

to enable selection and highlighting of

play26:37

the full raster image contents a popular

play26:39

question on oda technical support forum

play26:42

is how do i

play26:44

render a raster image with transparent

play26:46

background

play26:48

and now client applications is able to

play26:51

request rendering of

play26:53

32 bits per pixel raster images with

play26:56

transparent geometry for any oda

play26:58

vectorization

play27:01

[Music]

play27:04

model now we will mention a few final

play27:07

visualization features

play27:09

and the first one is a transparency

play27:11

support in our gdi device which can be

play27:13

used as for printing and for rendering

play27:16

the next two options are related to the

play27:19

import part of the oda visualize the

play27:21

first one allows to generate a so-called

play27:24

3d view during import of revit files if

play27:27

such view is absent

play27:29

the second one is the ability to import

play27:31

data from frozen layers in dwg files

play27:35

the last topic that i want to mention is

play27:37

the viewcoup implementation

play27:39

vcoop is a clickable object that allows

play27:41

you to change the current view

play27:44

it is a quite popular tool in modern

play27:46

computer edit design applications

play27:49

[Music]

play27:54

now it is time to discuss our future

play27:56

plans

play27:57

first of all we will plan to add the

play27:59

support of the reflection planes

play28:01

the next topic is a fast object

play28:03

transform

play28:04

this is a very important feature for an

play28:06

nd animation

play28:07

for the cases when many objects are

play28:09

involved in animation

play28:11

like for example is an explode tool

play28:14

also we will plan to add the

play28:16

implementation of the subpixel

play28:17

morphological anti-aliasing as maa

play28:20

we should solve the problem with fast

play28:22

approximate analyzing when one pixel

play28:24

lines appear to blur

play28:27

we are now working and we will continue

play28:28

to work on the new file format for the

play28:31

visualize vsfx

play28:33

this new format will reduce the size of

play28:36

the file up to 2.5 times

play28:38

and will support efficient streaming

play28:42

during last year

play28:44

we have seen a strong interest to our

play28:46

application open ac viewer

play28:48

and as a part of this interest we have

play28:49

received a main request for the creating

play28:52

of the plugin system to this application

play28:55

and we plan to work in this direction

play28:58

before we move on to next topics let's

play29:01

see an interesting member case

play29:03

demonstrating a complex use of different

play29:05

audi tools in cloud

play29:07

including visualize and publish

play29:12

[Music]

play29:19

hi there i'm sean the product lead at

play29:21

lunar and onset design coming to you

play29:22

today from melbourne australia and

play29:24

thanks for tuning in in this talk i'll

play29:26

run through a basic introduction of the

play29:27

lunar engineering document management

play29:29

system or edms for short and dive into

play29:32

some of the key oda technologies that

play29:33

make our product possible

play29:36

onset design is a small company based in

play29:38

australia and we specialize in

play29:40

everything related to engineering

play29:41

document management

play29:43

we've been an oda partner for a number

play29:44

of years and we assist companies

play29:46

implementing edms to manage their cad

play29:48

files

play29:49

one of the key challenges faced by our

play29:51

customers has been receiving and

play29:53

reviewing large sets of drawings from

play29:54

their contractors and we've historically

play29:57

used the oda libraries as a part of a

play29:58

portal product to implement validations

play30:00

on receipt of drawings

play30:03

this allows us to automatically check

play30:04

title block metadata quality among other

play30:06

things and speeds up the qa process

play30:09

allowing as built to be received and

play30:10

processed more efficiently

play30:14

luna is a cloud-based edms hosted on

play30:16

microsoft azure that grew out of this

play30:18

original portal product

play30:20

it's designed to allow smaller companies

play30:21

to get their edms up and running fast

play30:23

without the need for a complex design

play30:25

and config process

play30:27

the key features of lunar document

play30:29

upload revision review and collaboration

play30:34

we use a key set of oda technologies to

play30:36

make these features possible

play30:41

[Music]

play30:45

to show how the oda tech fits into our

play30:47

application architecture i'll introduce

play30:49

you to something that we call the lunar

play30:50

document processing pipeline or the

play30:53

journey that documents go through after

play30:54

being uploaded to luna firstly as

play30:57

documents are uploaded to luna they're

play30:58

automatically published using the

play31:00

publish sdk to thumbnail and pdf

play31:03

thumbnails are used for previewing

play31:05

documents in our list view whilst pdfs

play31:08

are used for document review and markup

play31:10

following this

play31:12

we push the documents through the

play31:15

drawings.net sdk

play31:17

to extract the various document metadata

play31:20

properties

play31:21

and store the title block and xref data

play31:24

next to the document in azure blob

play31:25

storage as json

play31:27

this can be used for validation metadata

play31:30

review and more later on in the drawings

play31:32

workflow

play31:34

when models are uploaded we also push

play31:36

them through the open cloud file

play31:38

converter automatically generating vsf

play31:40

files which can be used to view the icf

play31:43

model ifc models in the browser as our

play31:46

customers are starting to work with more

play31:48

model formats we've seen an increased

play31:49

demand for the users to be able to view

play31:52

and navigate models in luna without the

play31:54

need for an installed component after

play31:56

looking around at the various model

play31:57

viewing options available we finally

play31:59

landed on open cloud

play32:01

using opencloud we've been able to

play32:03

enable customers to view ifc models as

play32:05

well as native dwg and dgn files

play32:08

natively in the browser without the need

play32:10

for first translating them to pdf the

play32:13

next step will be to use the bim rev rv

play32:15

revit sdk to enable this functionality

play32:17

for revit models as well

play32:21

[Music]

play32:25

whilst there are alternative methods to

play32:27

achieve some of these features for

play32:29

example 3d model viewing they typically

play32:31

come with trade-offs like requiring a

play32:33

model to be uploaded and stored in a

play32:35

separate cloud repository which can be

play32:37

problematic when it comes to data

play32:38

sovereignty

play32:40

or per model or document rendering fees

play32:42

which can drive up the total cost of

play32:44

ownership for customers over time by

play32:46

using the oda libraries we can maintain

play32:48

control of where our data is hosted and

play32:50

keep our prices comparatively low by

play32:52

avoiding rendering fees

play32:54

so for us it's been a huge step forward

play32:57

and what's next well going forward we

play33:00

aim to further use the ifc and rapid

play33:02

sdks to unlock some of the smart data

play33:04

captured in models making it available

play33:06

to all you lunar users

play33:09

that's all for me today thanks for

play33:10

tuning in enjoy the rest of your day

play33:15

[Music]

play33:18

new features added to our digital kits

play33:20

and especially to ada visualize

play33:23

give us the ability to provide the

play33:25

solution for another important task a

play33:28

thorough design review of aec models to

play33:31

validate multiple project aspects

play33:34

this solution is a design review engine

play33:38

that evolved from a set of specific ode

play33:41

technologies visualize publish open

play33:45

cloud common data access and various bim

play33:48

formats support

play33:51

the major new capabilities we had this

play33:53

year to support a complete design review

play33:56

vlog 4 are

play33:58

support for federated b models in

play34:00

visualize and open cloud and two-way

play34:04

conversion between visualize toolkit

play34:08

and navisworks database

play34:11

for now ode design review engine is a

play34:14

solution with advanced set of

play34:16

functionality import natively supported

play34:19

multiple design formats ifc revit files

play34:23

navisworks files dwg files with

play34:26

architecture civil and map data

play34:30

investigate an aggregated model with

play34:34

high quality visualization

play34:36

fast selection and highlight

play34:39

get access to all model attributes

play34:44

validate the model with advanced 3d

play34:46

clash detection

play34:49

use 3d markup tools to communicate

play34:52

project needs

play34:54

collaborate basing on open beam

play34:57

standards such as bcf

play35:00

and prospectively open cde

play35:03

publish entire model of

play35:05

or part of it

play35:07

to pdf

play35:08

exchange the model data with navisworks

play35:11

files

play35:13

this design review engine features are

play35:16

available to extend your existing

play35:19

application

play35:20

or to create full featured design review

play35:23

tools

play35:25

[Music]

play35:30

when developing the open cloud solution

play35:32

we try to find a balance between

play35:34

stability system security and speed of

play35:37

adding new functionality

play35:39

to do this we deploy our solution to

play35:42

demo infrastructure to test new

play35:44

functionality

play35:46

and improve our stability for the past

play35:49

year

play35:50

several thousands of users were

play35:52

registered in our

play35:54

application

play35:56

which give us the opportunity to test

play35:58

our backend unreal data set

play36:01

in the same time we were able to test

play36:05

our new functionality in real conditions

play36:07

open cloud support a wide range of file

play36:10

formats

play36:11

for card it's a dwg djn dxf and some

play36:16

others

play36:17

for the beam it's ifc revit at nineties

play36:21

work

play36:22

also we support some

play36:25

common 3d file formats

play36:27

some files use additional file resources

play36:30

this can be a font file textures

play36:33

materials and even external reference

play36:37

to work with such complex files we

play36:39

provide a reference api

play36:43

you can upload all your files to the

play36:45

backend and link them together through

play36:48

the reference api

play36:50

this mechanism is flexible enough so you

play36:53

can link your file multiple times

play36:56

it can be used for example to create

play36:58

your own font library for rendering

play37:01

files in the browser we provide a

play37:03

visualize.js library

play37:05

this is a cross-compiled version of

play37:07

visualize project into a web assembly

play37:11

format

play37:12

it provides a rich api to work with the

play37:15

geometry data to manipulate with them

play37:18

or to create a new one

play37:21

beside this we provide an api for

play37:24

different

play37:26

tools like a measurement tool a slice

play37:29

panel tool

play37:31

and some others we are constantly

play37:33

improving functionality of our

play37:35

visualize.js library from the latest

play37:38

improvements we speed up the performance

play37:40

of loading geometry data

play37:43

and we change the way of loading this

play37:45

data

play37:46

which now is loaded the closest to the

play37:49

camera

play37:51

[Music]

play37:56

open cloud server provides an api to

play37:58

working with the users

play38:00

administrator can create new user and

play38:03

specify his specific settings

play38:07

and configuration

play38:08

for example you can create a user

play38:11

specify his name his position

play38:14

number of the project that the user can

play38:16

create and the amount of storage that

play38:19

the user can use

play38:21

for the convenience these users can be

play38:24

combined into groups

play38:27

quite often on the real project

play38:30

it is necessary to specify the same

play38:33

project access for the set of the users

play38:37

to do this we provide a role based api

play38:40

you can create a custom role

play38:43

change

play38:44

per user permissions and assign this

play38:47

role to your users or your groups open

play38:50

cloud provide the class detection

play38:52

functionality

play38:54

you can use this functionality to detect

play38:56

intersections between objects in the

play38:58

scene and it provides an api to

play39:02

configure this

play39:04

intersection detector

play39:07

with the help of the visualize.js

play39:09

library you can highlight the

play39:10

intersected objects and show them

play39:13

another feature of the server is the

play39:15

file assemblies

play39:16

this type of endpoints allow you to

play39:20

merge

play39:21

several files into a single common

play39:24

structure

play39:25

and then you can work with this

play39:26

structure as if it were a single file

play39:31

[Music]

play39:35

open cloud provide a simple set of file

play39:38

operations you can extract geometry data

play39:41

from the file or properties data

play39:44

but sometimes it is required to execute

play39:48

custom jobs to extract additional

play39:50

information

play39:52

to do this open cloud server provide an

play39:54

api to run custom jobs

play39:59

for example

play40:00

you can create such custom job to

play40:02

extract xdata from the dwg file and send

play40:07

it to a separate storage with a

play40:09

notification by default open cloud

play40:12

server use file system to store user

play40:14

files

play40:15

this is a reliable and secure solution

play40:19

but it requires additional

play40:21

administration and configuration

play40:24

if this option doesn't fit you

play40:27

we provide

play40:28

access to the additional third-party

play40:30

storage systems

play40:32

you can connect server to the amazon s3

play40:35

storage or azure blob storage the server

play40:38

is powerful enough to withstand the load

play40:42

of

play40:43

a large number of users

play40:46

during stress testing

play40:47

uh

play40:49

we use the server instance with one

play40:51

single core and two gigabyte of memory

play40:54

the server in such configuration was

play40:57

able to handle 18 000 requests per

play41:01

minute with one and a half requests per

play41:03

second for one active user the server

play41:07

can withstand the load of

play41:09

200 users for the convenience of working

play41:12

with the open cloud system we provide an

play41:16

open cloud cli tool

play41:18

you can use this to easily install and

play41:22

configure solution on your environment

play41:25

for example you need just only two

play41:28

commands to run our solution in docker

play41:31

system

play41:33

[Music]

play41:40

welcome to our session on web assembly

play41:42

debugging my name is emmanuel ziegler

play41:44

and i work in the va development team of

play41:45

google v8 is our javascript and

play41:47

webassembly engine that is used in the

play41:49

chrome browser microsoft edge and

play41:51

node.js if you are new to webassembly

play41:53

you need a little refresher on it don't

play41:55

worry we will quickly present the

play41:56

knowledge required to understand this

play41:57

talk

play41:58

the focus will be on how to debug and

play42:00

profile a webassembly application right

play42:02

in your chrome browser

play42:04

this can be useful if you have a bug or

play42:06

performance issue that is hard to reduce

play42:08

in native code of course you may also

play42:10

just use chrome out of convenience for

play42:12

not having to reproduce the error in

play42:14

another environment

play42:17

in last year's talk i gave an

play42:18

introduction to webassembly or wasm for

play42:20

short and how you can use it to bring

play42:22

your cc blusbus code to the web i

play42:24

recommend this talk if you want to know

play42:25

how to get started with western

play42:27

development

play42:28

for now all you need to know is that

play42:29

wasm is a low level language that allows

play42:31

you to safely and performantly ship

play42:33

binary code on the web

play42:35

instead of a machine executable western

play42:37

provides an intermediate representation

play42:39

that will be compiled just in time in

play42:41

your browser

play42:42

wasm is available in any major browser

play42:44

but i will focus today on google chrome

play42:46

for convenience

play42:48

to create a business module from cc

play42:50

blastbus code we will use the

play42:51

inscription toolchain wasm also supports

play42:53

other languages such as rust or

play42:55

assemblyscript with more to come

play42:59

we will start with a simple example that

play43:00

simulates the collets conjecture which

play43:02

claims that if you triple the value and

play43:04

add 1 for odd numbers and half the value

play43:06

for even numbers repeatedly you will

play43:08

eventually arrive to a loop consisting

play43:10

of the sequence to one over and over

play43:12

again provided that you started with a

play43:14

positive integer

play43:15

if you're confused about what this does

play43:17

don't worry the details are not

play43:18

important for our investigations we will

play43:20

be running this with different random

play43:22

numbers over and over for 500 million

play43:24

times the problem with this

play43:26

implementation is that it does not work

play43:27

because it gets stuck in an endless loop

play43:32

we now want to debug the algorithm to

play43:33

find the mistake and we can add

play43:35

debugging symbols and switch off

play43:36

optimizations using the minus g switch

play43:39

just like with gcc or client for

play43:41

convenience i am creating an html file

play43:43

together with the watson module and its

play43:44

javascript code

play43:46

using a special extension which is still

play43:48

in beta testing chrome can reach dwarf

play43:50

debugging information embedded in the

play43:51

module and we can navigate the c codes

play43:53

directly you can find the extension

play43:55

under the link in the slide

play43:57

for the extension to work we also need

play43:59

to enable an experimental feature in the

play44:01

chrome developer tool settings

play44:03

you can do that by opening the developer

play44:05

tools clicking the little gear icon in

play44:06

the upper right corner and then enabling

play44:08

the web assembly debugging devtools 12

play44:11

support in the experiment section

play44:15

i have now opened the debugger in

play44:16

devtools and set a breakpoint in the

play44:18

main function after reloading the

play44:20

program pauses at the main function as

play44:22

expected

play44:25

[Music]

play44:31

you can see this from the pause in

play44:33

debugger message on the top of the page

play44:35

as well as in dev tools paused on

play44:37

breakpoint and the breakpoint that i'm

play44:40

currently passed on is highlighted in

play44:41

the list and in the source code view

play44:46

the scope on the right hand side

play44:47

contains the local variables the local

play44:50

variable is still undefined at this

play44:51

point but once i start stepping through

play44:53

the function it gets initialized with 0

play44:56

and then with its actual value from the

play44:57

time function

play45:02

[Music]

play45:06

once i reach the scope of the for loop

play45:08

the run counter also becomes visible

play45:11

run is initialized with zero and i not

play45:13

only can see this in the scope but also

play45:15

when i hover over the variable

play45:20

[Music]

play45:27

[Music]

play45:32

i will now put a breakpoint here so we

play45:34

can pause every time a new call to run

play45:36

example is made

play45:37

i can either deactivate the other

play45:39

breakpoint or remove it completely as we

play45:40

don't need it anymore

play45:44

[Music]

play45:49

we are now going to step into the

play45:50

function but of course the first

play45:52

function to be called is rand and we

play45:54

therefore end up in there

play45:55

as you can see this function does not

play45:57

have debug information and we therefore

play45:59

are presented with a raw vessel code

play46:01

which you can also see from the stack

play46:02

trace showing this little warning icon

play46:07

for the c main function i generated the

play46:09

debugging information while for this

play46:11

automatically generated main wrapper

play46:13

there is also no information

play46:18

below that we find the javascript trains

play46:21

you can see that the scope now shows

play46:22

information on the local variables in

play46:24

javascript

play46:28

if i go back into rand we can see that i

play46:30

can step through this low-level web

play46:31

assembly just like the rest of the code

play46:35

i can look at the local variables and as

play46:37

i keep stepping through it the

play46:38

information slowly gets populated

play46:40

including the low level stack

play46:42

if you are interested in this low level

play46:44

behavior here you can just step through

play46:45

your functions and see how it works

play46:50

[Music]

play46:53

we are currently not interested in this

play46:54

so i'm going to step out of this

play46:56

function and step into run example

play46:58

we can watch the value of i change as

play47:01

i'm stepping through it

play47:05

[Music]

play47:12

[Music]

play47:16

do

play47:20

[Music]

play47:29

we now want to figure out why our

play47:31

algorithm does not complete and i

play47:33

therefore continue until we reach the

play47:34

point where it fails

play47:38

can see that the breakpoint is not hit

play47:39

again even though we should have

play47:41

completed one example in fractions of a

play47:42

second

play47:43

so this means that we are still in the

play47:45

first call of this function

play47:47

let's pause and see where we are

play47:49

we are still in one example as expected

play47:52

and if i go one level up we can confirm

play47:54

that this is indeed still run 0 and we

play47:56

really didn't hit the breakpoint

play47:58

let's go back into the top scope and see

play48:00

what's happening

play48:04

there let's take a good look at the

play48:07

number i and remember it for later

play48:09

as i'm stepping through the function the

play48:11

number keeps changing as expected

play48:16

[Music]

play48:23

[Music]

play48:30

[Music]

play48:32

but then at this point in time i end up

play48:34

with the same number that we saw

play48:36

originally and this means that this loop

play48:38

is going to continue forever and i will

play48:40

always toggle in between these two

play48:41

numbers and never reach the exit

play48:43

condition as i never becomes one

play48:49

[Music]

play48:51

if you remember the collets conjecture

play48:53

you'll notice that something is not

play48:55

right here

play48:56

we have an odd number here and we should

play48:58

be multiplying it by three and add one

play49:00

but we end up in the branch that should

play49:02

divide by 2 but as you can see from the

play49:04

shift operator it's actually pointing in

play49:06

the wrong direction here

play49:10

[Music]

play49:17

[Music]

play49:21

so we got two errors to fix

play49:23

switch the if and then bodies and fix

play49:25

the shift operator

play49:26

this should then be an accurate

play49:28

implementation of the coreless

play49:29

conjecture and we should exit each loop

play49:31

properly

play49:35

let us quickly fix the issue with the

play49:37

wrong condition by exchanging the if and

play49:39

else bodies

play49:40

if we compare the performance to that of

play49:42

the native version compiled with clang

play49:45

we see that we are substantially slower

play49:47

this only sometimes happens and if we

play49:49

simply reload the page the performance

play49:51

is on par with the native version

play49:53

sometimes westminster is still a little

play49:55

slower but it should come close to what

play49:56

you see in native performance

play49:58

so why was our first run slower

play50:02

in last year's talk i explained that v8

play50:03

uses a two-tier compilation strategy

play50:06

this allows faster startup times while

play50:08

ensuring a high peak performance

play50:10

in the beginning it can happen though

play50:11

that the top tier has not yet completed

play50:13

its compilation when the program is

play50:14

executed and because there is no on

play50:17

stack replacement it can happen that it

play50:18

stays in the baseline here for the whole

play50:20

execution

play50:21

this is usually not an issue because if

play50:23

the program keeps returning to a

play50:25

function higher up the stack and then

play50:26

calls the inner function again the new

play50:28

version will be called

play50:30

in benchmarks this might not happen

play50:31

though because of their simplicity and

play50:33

the forced inlining of the run example

play50:35

function certainly does not help here

play50:38

there can even be implicit inlining the

play50:40

compiler notices that the function is

play50:42

not used outside the code

play50:44

what works well in native code can

play50:45

therefore be a problem with wasm

play50:48

so you might consider forbidding

play50:49

inlining of benchmarking functions that

play50:51

are called

play50:52

repeatedly but why did it work the

play50:54

second time

play50:56

that's because chrome caches compilation

play50:57

results of the top tier so they don't

play50:59

need to be recompiled again and again

play51:01

on repeated runs you will therefore

play51:03

likely start with the top tier right

play51:04

away

play51:08

now prevent inlining of the function and

play51:09

we can see that the performance is now

play51:11

much more predictable

play51:14

or so it seems at least

play51:16

if i load the program with devtools open

play51:19

debugging will actually force vh to use

play51:21

the baseline tier leading to bad

play51:22

performance

play51:24

this is especially confusing if you

play51:25

decide to output your benchmark results

play51:27

to the console and therefore keep the

play51:29

console open

play51:31

it's better to run the benchmark first

play51:32

and then open the console to check the

play51:34

output

play51:35

v8 will then run at full performance and

play51:37

you still have access to all the

play51:38

messages

play51:42

[Music]

play51:48

if you want to run a proper function

play51:49

profile of our code we should recompile

play51:51

it with a profiling command line flag so

play51:53

function names which are normally

play51:54

stripped from the reson binary are

play51:56

included

play51:57

this also enables some other useful

play51:58

changes to the module but if you do not

play52:00

want that and you prefer just having the

play52:02

function names put in the module you may

play52:04

just use the profiling funcs flag

play52:07

we can record function level profiles in

play52:09

webassembly using the performance tab in

play52:11

devtools

play52:12

you can choose to press the recording

play52:14

button to start the recording

play52:15

immediately or reload and then start

play52:17

recording

play52:19

i will reload so my program gets

play52:21

re-executed

play52:24

once we start recording the module will

play52:26

be tiered up so we can record the

play52:27

regular performance and not the one of

play52:29

the baseline

play52:30

here a few seconds of data suffice for

play52:33

our needs and when the profile is done

play52:35

we can see that the majority of time is

play52:36

spent in script execution

play52:41

[Music]

play52:48

[Music]

play52:56

looking at the timeline we see that we

play52:58

are mostly skipping in between two

play53:00

functions the original main from the c

play53:02

file and the run example function

play53:05

the gaps where run example stops

play53:06

executing is the time spent in main or

play53:09

the rand function

play53:10

we can also take a look at the bottom up

play53:12

call graph which features the functions

play53:14

in which most time is spent on the top

play53:17

as to be expected the majority of the

play53:19

time is spent in one example where the

play53:21

inner loop is followed by original main

play53:23

with the outer loop and occasional calls

play53:25

to rent

play53:27

the other parts only contribute to a

play53:28

negligible amount we can also check from

play53:31

which functions this one was called so

play53:33

we understand the call pattern

play53:35

we can also look at the top down graph

play53:37

where we can easily see the path the

play53:39

program takes and on which branch it

play53:40

spends the most time

play53:43

all of this works exactly like it does

play53:45

with javascript for more complex

play53:47

programs this provides useful insights

play53:49

for optimization targets that really

play53:51

help speed up your application

play53:54

thank you for watching this little speed

play53:55

run through webassembly debugging and

play53:57

profiling

play53:58

if you work with webassembly please try

play54:00

these features and let us know what you

play54:02

are missing most

play54:03

have a nice day and happy coding

Rate This

5.0 / 5 (0 votes)

Related Tags
数字化转型3D扫描建筑行业可视化技术自动化云技术工程文档项目管理设计审查性能优化
Do you need a summary in English?