建筑师在用人工智能做什么? - CDRF2020会议导读

这篇文章深入解析了2020年同济大学举办的CDRF会议,聚焦AI在计算设计、环境评估、数据挖掘等领域的应用,展示了多项创新研究,如实时缺陷检测、深度学习驱动的城市色彩分析和智能街区设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CDRF(Computational Design and Robotic Fabrication)是同济大学从2019年开始举办的国际会议,从名字中就可以看出,会议的主题是计算性设计和数字建造,归属于计算机辅助设计的大方向内。相比于同行业的四大会议(ACADIA, CAADRIA, eCAADe, CAADFutures),同济大学的CDRF代表的是年轻的新生力量,大多数作者是来自国内的研究团体。依附于国内近些年在建筑数字化上的飞速进展,CDRF会议也在逐步赶超其他同行会议,成为主流的国际顶级会议之一。

本期主要介绍的是2020年的CDRF会议上的AI+AD相关文章。会议本来已经于2020年6月成功举办(相关链接请参考文末),但会议论文集直到近期才正式公布(相关链接请参考文末),因此本文一直到现在才发布。

另外,2021年的会议征稿已经发出(相关链接请参考文末),在正文开始前,也是附带介绍一下会议本身,我们先来解读一下今年的征稿启事中有什么值得关注的信息。

CDRF2021征稿启事

首先,会议是全英文进行,论文篇幅大约3000词,具体投稿和会议时间节点请参照上图海报。会议官方的主题分成五大类:计算与生形,模拟与优化,数据挖掘与推演,感知与反馈,物质建造。简单的说,五大主题就是我们所谓的:参数化设计,环境评估,大数据,交互,数字建造。

其中,人工智能几乎可以在所有主题内得到结合,比如辅助建筑设计的过程,或者是生成城市大数据的分析方案。从2020年的会议发文量统计来看,其中大约1/3的文章使用了AI的方法,处理的问题横跨建筑,城市,景观多个领域。所以想必今年的会议,AI这一隐性主题也会是非常火热吧。

那么,以下正文:

设计认知:

Real-Time Defect Recognition and Optimized Decision Making for Structural Timber Jointing (Luo, Gattas, and Tan 2020)

关键词:语义分割,自动化

本文介绍了一种新的方法来改良木材生产过程,减少浪费。作者首先用收集的木材图像和手动标签来训练机器学习模型,以检测一块木头中的缺陷区域。基于分割信息,工厂可以自动生成加工计划来去除缺陷区域。最后,作者还开发一个脚本来重新排列被切割后的木材,以匹配工业用途所需的长度。同时被开发的还有一个用户界面,可以更好地利用整个系统改进木材生产程序。

Images in the process.

A Large-Scale Measurement and Quantitative Analysis Method of Façade Color in the Urban Street Using Deep Learning (Zhang, Fukuda, and Yabuki 2020)

关键词:语义分割,城市分析

本文介绍了一种使用深度学习技术分析城市外观颜色的方法。作者巧妙地使用了PSPNET,用于对自动收集的街景图像进行分割以获取立面区域,从而支持对城市色彩的进一步计算和分析。本文数据收集过程清晰,数据集具有代表性,文献综述丰富,方法和工作流程清楚。

Workflow for façade color collecting and calculating in urban street.

A Performance-Based Urban Block Generative Design Using Deep Reinforcement Learning and Computer Vision (Han, Yan, and Liu 2020)

关键词:强化学习,环境评估

本文介绍了深度强化学习在通过性能指标优化城市街区建筑形式和布局中的应用。在DRL中添加建筑物的操作可以极大地改进先前的方法,并将输入变量设为可变长度。

Alternatives generated by the approach.

Growing Shapes with a Generalised Model from Neural Correlates of Visual Discrimination (Cutellic 2020)

关键词:未知领域的神秘文章。。。

本文介绍了一种使用从个体检测到的脑电图(EEG)信号对形状进行分类的方法。作者首先开发了一种简单的脚本来生成各种形状,其中包含有限数量的参数。然后作者向每个实验对象显示每种形状并记录EEG信号,通过机器学习模型提取可识别的特征。进一步的2D尺寸缩减显示了来自EEG信号和生成形状的特征的相应结果。

Adaptation of the typical RSVP-OP task.

设计生成:

Suggestive Site Planning with Conditional GAN and Urban GIS Data (Tian 2020)

关键词:GAN,城市生成

本文是一篇标准的GAN文章,介绍了几种数据处理技术和基于图像的神经网络。作者收集了波士顿的GIS数据,并将其转换为图像来表示每个城市街区的建筑布局。然后作者训练了一个GAN模型来学习区块边界和布局之间的映射。

Workflow diagram.

Exploration of Campus Layout Based on Generative Adversarial Network (Liu, Luo, et al. 2020)

关键词:GAN,平面生成

本文介绍了一种基于图像的神经网络GAN用于生成校园建筑布局的方法。对于较为简单的小学设计,作者直接生成布局,而对于较复杂的大学校园设计,作者采用两步生成的技术,先生成区域,然后生成布局。

Selected results from the testing set of the university in step 2.

A Preliminary Study on the Formation of the General Layouts on the Northern Neighborhood Community Based on GauGAN Diversity Output Generator (Pan, Qian, and Hu 2020)

关键词:GAN,平面生成

本文介绍了一种基于GauGAN的神经网络,用于生成地块上的建筑布局。区别于以往的技术比如pix2pixHD,GauGAN允许用户输入边界图片的同时,还支持输入风格图片。GauGAN中的E网络先将图片编码至隐空间,再结合输入图片进入G网络。本质上提供了用户一种生成多种解的方法。

Results.

embedGAN: A Method to Embed Images in GAN Latent Space (Chen, Huang, and Luo 2020)

关键词:GAN,平面生成

本文提出了一种基于embedGAN的编码器,作者将编码器嵌入到传统GAN中,可以基于特定的输入图像提供更可控的结果。神经网络E首先将输入图像转换为隐空间变量z,然后将z输入到生成式神经网络G中以输出图像。这样输出的图像就可以包含输入图像的编码信息。通过将连续的一系列z输入到神经网络G中,可以生成一系列相应的图像,代表了输入图像的不同特征(风格)。本文提出的技术可以应用于生成具有不同特征的建筑图像。

Regenerated images in latent walks. From left to right, the generated image is more like the decorative style of the material.

 

Machine Learning for Fabrication of Graded Knitted Membranes (Sinke et al. 2020)

关键词:GAN,数值预测

本文介绍了一种基于GAN的神经网络,输入载荷作用下的形变图案来生成对应的织物图案。训练完成的神经网络将具有结构生成的功能,用于生成特定的编织图案。作者首先制造了8块样例编织物,并记录了它们在中心15公斤荷载下的形变量。将输入和输出数据转换为图像后,作者训练了一个GAN模型。虽然后来的预测并不那么成功,但作者对实验及其原因进行了很好的介绍和解释。

The comparison between the ML and D sample knitting pattern samples.

Pipes of AI - Machine Learning Assisted 3D Modelling Design (Liu, Shen, et al. 2020)

关键词:Style Transfer,建筑设计

一篇标准的风格迁移文章。作者将一个建筑体量切割为若干平面图,然后基于二维的风格迁移对每张平面图生成风格化后的图像,并重新在三维空间内建模,实现2.5维的风格迁移。

Translation of all the geometric layers.

 

 

Machine Learning Aided 2D-3D Architectural Form Finding at High Resolution (Zhang and Huang 2020)

关键词:styleGAN,建筑设计

本文展示了styleGAN在生成二维建筑截面图并将截面图转换为3D建筑形态中的应用。针对分辨率问题,作者提出了一种方法,用低分辨率图像训练styleGAN,再训练一个GAN模型(PIX2PIX),从低分辨率图像生成高分辨率图像。

Process of multi-level training network.

Artificial Intuitions of Generative Design: An Approach Based on Reinforcement Learning (Wang and Snooks 2020)

关键词:强化学习,体素生成

本文介绍了一种强化学习应用程序,用于在“随机游走”生成设计中寻找最佳解决方案。随机游走算法定义了一种基于体素的生成设计方法。强化学习算法进一步参与该过程,对于给定的奖励函数找到最佳策略。作者还对比了监督学习,无监督学习和强化学习,阐明了使用强化学习处理生成式问题的理由。

Diagram demonstrating the training intention of the Domino system as a type of intuition within the RW generative formation process.

相关链接

会议现场录屏:

https://www.youtube.com/watch?v=AyaqGPakeUA

论文集下载链接:

https://link.springer.com/book/10.1007/978-981-33-4400-6

<think>我们正在处理一个关于MFC中CListCtrl控件设置指定单元格颜色的问题。根据提供的引用信息,我们可以总结出几种方法: 1. 使用自定义绘制(Custom Draw)技术,通过处理NM_CUSTOMDRAW消息来设置单元格颜色(如引用[2]所示)。 2. 使用第三方封装的类(如引用[3]提到的CColorListCtrl)。 3. 在自绘(Owner Draw)模式下进行绘制(如引用[4]中创建控件时使用了LVS_OWNERDRAWFIXED样式)。 其中,引用[2]的示例代码展示了如何通过处理NM_CUSTOMDRAW消息来改变不同行的文本颜色,但它是按行设置颜色,而不是按单元格(即指定行和列)。我们需要设置指定单元格(特定行和列)的颜色。 实际上,设置指定单元格的颜色需要我们在绘制时获取当前绘制的单元格(行和列),然后根据需要进行设置。 以下是一种常见的实现方法: 步骤: 1. 为CListCtrl控件添加NM_CUSTOMDRAW消息处理函数。 2. 在消息处理函数中,处理不同的绘制阶段: - 在CDDS_PREPAINT阶段,返回CDRF_NOTIFYITEMDRAW,表示我们需要接收每个项目的绘制通知。 - 在CDDS_ITEMPREPAINT阶段,返回CDRF_NOTIFYSUBITEMDRAW,这样我们就会收到每个子项目(即单元格)的绘制通知。 - 在CDDS_ITEMPREPAINT | CDDS_SUBITEM阶段,我们可以设置当前单元格(子项目)的文本颜色和背景色。 注意:在MFC中,我们可以通过NMLVCUSTOMDRAW结构来设置颜色。 示例代码: 首先,在对话框类中声明消息处理函数: ```cpp afx_msg void OnCustomDrawMyList(NMHDR *pNMHDR, LRESULT *pResult); ``` 然后,在消息映射中添加: ```cpp ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST1, &CMyDialog::OnCustomDrawMyList) ``` 最后,实现消息处理函数: ```cpp void CMyDialog::OnCustomDrawMyList(NMHDR *pNMHDR, LRESULT *pResult) { NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR); *pResult = CDRF_DODEFAULT; switch (pLVCD->nmcd.dwDrawStage) { case CDDS_PREPAINT: *pResult = CDRF_NOTIFYITEMDRAW; break; case CDDS_ITEMPREPAINT: *pResult = CDRF_NOTIFYSUBITEMDRAW; break; case CDDS_ITEMPREPAINT | CDDS_SUBITEM: { int nItem = static_cast<int>(pLVCD->nmcd.dwItemSpec); int nSubItem = pLVCD->iSubItem; // 这里根据nItem和nSubItem来决定颜色 // 例如,设置第0行第1列的单元格文本为红色 if (nItem == 0 && nSubItem == 1) { pLVCD->clrText = RGB(255, 0, 0); // 红色文本 // 如果要设置背景色,可以使用pLVCD->clrTextBk // pLVCD->clrTextBk = RGB(255, 255, 0); // 黄色背景 } *pResult = CDRF_DODEFAULT; } break; } } ``` 注意:上面的代码中,我们只设置了一个单元格(第0行第1列)的文本颜色为红色。你可以根据实际需求设置任意单元格的颜色。 另外,引用[3]提到了一种使用封装好的CColorListCtrl类的方法。如果你希望使用已经封装好的类,可以尝试引入ColorListCtrl.h和ColorListCtrl.cpp文件,然后将你的CListCtrl控件替换为CColorListCtrl类,并通过该类提供的方法设置单元格颜色。这种方法可能更简单,但需要额外的类文件。 如果你选择使用自定义绘制,那么上面的示例代码应该可以满足设置指定单元格颜色的需求。 此外,引用[4]提到了使用LVS_OWNERDRAWFIXED样式,这表示控件是自绘的。但是,自绘需要处理WM_DRAWITEM消息,并且需要自己绘制整个控件,相对复杂。而使用自定义绘制(Custom Draw)则更为灵活和简单。 因此,推荐使用自定义绘制的方法。 相关问题: 1. 如何设置CListCtrl单元格的背景色? 2. 如何根据单元格内容动态设置颜色? 3. 使用自定义绘制时,如何同时改变单元格的文本颜色和背景色?</think>在 MFC 中为 `CListCtrl` 设置**指定单元格**的颜色,可通过自定义绘制技术实现。以下是详细步骤和代码示例: ### 方法 1:使用 `NM_CUSTOMDRAW` 消息(推荐) 在对话框或视图类中添加消息处理函数: ```cpp // 头文件声明 afx_msg void OnCustomDrawList(NMHDR* pNMHDR, LRESULT* pResult); // 消息映射 BEGIN_MESSAGE_MAP(CYourDialog, CDialogEx) ON_NOTIFY(NM_CUSTOMDRAW, IDC_YOUR_LISTCTRL, &CYourDialog::OnCustomDrawList) END_MESSAGE_MAP() // 实现 void CYourDialog::OnCustomDrawList(NMHDR* pNMHDR, LRESULT* pResult) { NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR); *pResult = CDRF_DODEFAULT; switch (pLVCD->nmcd.dwDrawStage) { case CDDS_PREPAINT: *pResult = CDRF_NOTIFYITEMDRAW; // 请求逐项绘制通知 break; case CDDS_ITEMPREPAINT: *pResult = CDRF_NOTIFYSUBITEMDRAW; // 请求子项(单元格)绘制通知 break; case CDDS_ITEMPREPAINT | CDDS_SUBITEM: // 单元格绘制阶段 const int row = pLVCD->nmcd.dwItemSpec; // 当前行索引 const int col = pLVCD->iSubItem; // 当前列索引 // 设置指定单元格颜色(示例:第2行第3列红色) if (row == 1 && col == 2) { pLVCD->clrText = RGB(255, 0, 0); // 文本颜色 pLVCD->clrTextBk = RGB(240, 240, 240); // 背景色 } *pResult = CDRF_DODEFAULT; break; } } ``` ### 方法 2:使用封装类 `CColorListCtrl` 1. 引入封装类(如 `CColorListCtrl.h`[^3]) 2. 替换控件类型: ```cpp // 头文件 #include "ColorListCtrl.h" CColorListCtrl m_ListCtrl; // 替换原CListCtrl // 实现 m_ListCtrl.SetCellColor(1, 2, RGB(255,0,0), RGB(240,240,240)); // 设置第2行第3列 ``` ### 关键注意事项 1. **控件样式**:创建控件时**不要**包含 `LVS_OWNERDRAWFIXED`(与自定义绘制冲突)[^4] ```cpp m_ListCtrl.Create(WS_CHILD | WS_VISIBLE | LVS_REPORT, rect, this, IDC_LIST); ``` 2. **网格线问题**:避免使用 `LVS_EX_GRIDLINES` 扩展样式,因其会覆盖自定义背景色[^4] 3. **性能优化**:在 `CDDS_ITEMPREPAINT|CDDS_SUBITEM` 阶段精确控制目标单元格,避免全表重绘 ### 效果说明 - **文本颜色**:通过 `clrText` 设置 - **背景颜色**:通过 `clrTextBk` 设置 - **动态更新**:调用 `m_ListCtrl.RedrawItems()` 强制刷新 > 通过自定义绘制技术,可灵活实现按数据状态动态设置单元格颜色(如数值超限标红、状态异常标黄等)[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值