こんにちは、BULBの高橋です。現在BULB内で自動レイアウトを実現するためのアルゴリズムを研究しています。
AutoFloorではオフィスの間取り図を読み込んで家具や間取りの配置を自動レイアウトすることを目指しています。本機能は現在開発中ですが、その研究アプローチの一部をご紹介いたします。
自動レイアウト問題に共通する課題
レイアウト自動化の大きな課題は、アウトプットの評価が受け取り側次第で主観的に分かれることにあります。レイアウトの良し悪しは明確に数字で定義する事が出来ず、最終的には人の好みになります。その人の好みというのもバラバラだし求める基準もケースバイケースなので、ある人にとっては良いデザインでも他の人にとってはそうでもないかもしてません。
ではどうやってアルゴリズムをデザインするかというと、部屋の大きさや縦横の比率は自然か、適切な部屋が窓際にあるか、スペースないを効率良く出来る導線が確保されているかなど、定量的に定義出来る「良いレイアウト」を元に、その目的を最大化していきます。その際に、ベストなものを1つ見つけ出す事は重要ではありません。何故なら上記で説明した通り、元となっている目的は最終的な目的(人が見て良いと思うレイアウト)とは違うからです。よって、ベストなものを見つけるよりも、バラエティーに富んだそこそこ良いものを沢山生成する事の方が重要です。そうすればユーザーはその中から好みのものを選んだり、テンプレートとして使い若干手を加えたりする事が出来ます。
自動レイアウトのステップ
現在取り組んでいるアプローチでは、自動レイアウトを3つのステップに分けています。
1. Architectural Program
Architectural Programとは、各部屋の数、エリア、縦横の比率、どの部屋がどう繋がっているか(壁があるかどうか)などを定義したもので、Topologyとも呼ばれます。
このステップを自動化してるアルゴリズムもありますが、多くはArchitectural Programをインプットとして与える必要があります。求めるArchitectural Programのデータ構造はアルゴリズムによって異なります。
2. 部屋のエリア分割
どこにどれくらいの大きさの何の種類の部屋を配置するかというもの。会議室や執務エリアや受付や社長室など色々なものを配置します。一番メインとなるステップです。
3. 部屋の中の家具のレイアウト
2のレイアウト区画の中に家具をレイアウトします。部屋全体の調和性や周囲の区画との整合性もとりながらレイアウトを行います。
3は簡単な家具レイアウトが出来るような内容なので、既存のAutoFloorの機能のカスタマイズである程度対応できそうです。
1は場合によってはユーザーからの要望で半分ほど埋まるので、優先度は2より低めで考えています。ユーザからのアンケートで席数や会議室の数などを埋めて頂ければ、Architectural Programへの変換はロジックベースである程度いけそうです。このArchitectural Program自体の多様性も重要になってきます。
つまり自動レイアウト問題はステップ2が最も重要で且つ難易度が高いと考えています。
部屋の自動エリア分割の手法研究
エリア分割の例
難易度の高い部屋の自動エリア分割については、学術的にも様々な研究がされているようです。海外論文でも多数の研究発表が行われており、弊社内でもそれらの手法の比較や研究を続けています。
各手法の詳細は割愛しますが、多くの手法は一般住宅向けの自動化を対象にしているようです。我々はそれらの手法を応用してオフィス向けのバージョンを開発していますが、そのまま転用してパラメータを変えれば一般住宅向けのサービスも提供できそうです。特にマンションなどは同じような間取りばかりだと思うので、レイアウトの自動提案のハードルも低いかもしれません。将来機能として是非リリースしていきたいと思っています。
最後に
BULBでは一緒に自動家具レイアウトを研究してくれる仲間を募集しています!興味もってくれた方は是非一度ご連絡ください。