開発はたった一人——ブラウザで動く3DCGツール「nodi 」が持つ可能性
「Nodi」はプロシージャルモデリング(Procedural Modeling)と呼ばれる手法を用いたWebブラウザー上で操作する3D CGツールである。現在はβ版で完全無償公開ながら、商用ソフト並の機能を備えている。にも関わらず、開発しているのはプログラマーの中村将達氏たった一人。聞けば個人的に開発しているプロジェクトだという。 中村氏はもともと社会学を専攻していた大学生でプログラムをしたこともなかったという。それがどうしてプログラムを習得し、プログラマーとなり、やがて3D CGツールを自分で作るに至ったのか。中村氏に、Nodiの機能や開発の経緯について話を聞いた。(撮影:川島彩水)
プロシージャルモデリングとは?
プロシージャルモデリング方式のツールとしては、3D CGツール「Revit」や「Maya」のプラグインとしても知られる「Dynamo」や、サーフェスモデラー「Rhinoceros」のプラグイン「Grasshopper」が有名である。「プロシージャル(Procedural)」は「手続きの」「手順の」といった意味になる。日本語訳では「手続き型」が当てられている。
よく知られる3D CGのモデリング(ダイナミックモデリングまたはダイレクトモデリング)では(3D)マウスやタブレットとペンなどを使い、曲面や面を操作しながら、粘土をこねくり回すように形状を作成していく。プロシージャルモデリングは全く異なり、まるでプログラムを組むかのように形状を作り上げるためのルールを定義していく。いわゆる「ノードベースプログラミング」と呼ばれる方式となる。ソリッド3D CADのメジャーな手法で、幾何形状と寸法値をロジカルに定義して形状を作り上げるパラメトリックモデリングにも関連している。
プロシージャルモデリングは「四角い形状を作る」「方向を示す」「点を並べる」といった機能の単位が1つのボックス「ノード」に収まっており、まずそこに数字などで定義をする。さらに、ノード同士を線で結ぶことで、関連付けをしていく。
Nodiでは、左側にノードプログラミングのエディターウィンドウ、右側にプログラミングで形成される3Dモデルのプレビューウィンドウを備える。3Dモデルウィンドウでも直接形状修正ができる。これはGrasshopperに似た画面構成になっている。
プロシージャルモデリングの利点は、「デザイナーの頭の中にある、形状を生み出すためのルールを、明示的な手続きとしてのコードという形で残していけることと」だと中村氏は説明する。
例えば、「どうしてその形になるのか」という理由が、誰にでも正しく解釈できるよう可視化される。また、そのルールを使って、作成者ではなくても修正を加えることができる。「例えば、いろいろなデザイナーの考えたルールを混ぜることが可能。亡くなった人のデザインのルールを残しておくこともできる」(中村氏)。
また、複雑かつ大規模で、規則性があるような形状が作りやすいのも利点の一つだ。例えばおびただしい数の段があり、かつ複雑に曲がりくねるらせん階段などだ。このようなケースでは、一つ一つのパーツを動かすなどの修正をするよりは、らせん階段を生成するためのルールを作って管理した方が修正しやすい。
手作業で3Dモデルをこねくりまわすのではなく、数字や論理で考えながら形を作り上げることで、後から修正したり、デザインに明確な意図を加えたりといったことがやりやすくなる。現状ではSTLやOBJなどポリゴンデータの作成がメインだが、「さまざまなソリッドモデル形式での出力機能の実装は可能」(中村氏)だという。
Nodiはさらに、Webブラウザー上で全ての作業を行える、クラウドベースのアプリケーションであることも大きな特色だ。スマートフォンからは現状、閲覧のみ行える。これはGrasshopper などでは対応していない仕組みだ。クラウドのソフトであるため、操作するPCはエンジニアリングワークステーションなどのようにハイスペックである必要はない。Googleのドキュメントツールさながらに共同作業が行えて、かつユーザーの権限コントロールも可能である。例えばノードプログラムは見せずに3Dモデルだけを共有することができる。
逆に、プログラミング画面だけ見せる機能は、現時点では提供していないが、既に開発済みであり、後は実装するのみの状態だという。この機能があれば「プログラムの数字の部分だけ設定してもらって、形は見せない」といったことができるようになる。
現状のNodiはβ版ながら、既に実用に耐え得る機能を備える。早速、Nodiを使って作品を作り上げているユーザーもいる。「仕事で使っている人もいれば、趣味で使っている人もいます」(中村氏)。
以下はファブリケーションエンジニアの立川博行氏による作品の例だ。
NodiはGコードを生成することもできるため、形状データを3Dプリントや切削加工、塑性加工のアプリケーションにそのまま送ることができる。「Webブラウザー上で動くツールで、モデリングから加工データまで対応できるソフトウェアは、そうそうないと思う」と立川氏はいう。
「ちょっとやってみようかなぁ」——無我夢中の一期一会が紡ぐ
中村氏は、はなから「これでビジネスをしよう」という野心めいた思いがあってNodiを作り始めたわけでもなく、「仕事の傍ら、趣味でちまちま、ひとりで作っている」と話す。余暇の結構な時間をNodiの開発に割いているとのことだ。ユーザーは無料で利用可能で、今のところはそこから収益を得ていることもない。
「どうしてNodiの開発を始めたのか」という問いには、「話せば長くなる。自分がプログラミングを始めたきっかけにさかのぼると伝わるかもしれない」と中村氏は説明する。
中村氏がプログラムに目覚めたタイミングは、決して早いとはいえない、大学4年のときだ。それまでは社会学を専攻していた。「卒業論文を準備している時に、たまたま情報社会学に興味を持ったのがきっかけだった」(中村氏)。
具体的には、サイバー法学者のローレンス・レッシグ氏が提唱していた「アーキテクチャー」「環境管理型権力」といった概念に興味を持ったことだ。
レッシグ氏は環境管理型権力の例として、「マクドナルドのイスは、硬くしておいてお客さんが長時間座れないようにして店の回転率を高める」ということや、「飲酒運転を防ぐためには、運転手の呼気から自動車のセンサーがアルコールを自動検知して車両をロックしてしまう」といったケースを紹介している。
環境管理型権力と情報社会を合わせて論じたレッシグ氏の書籍を通じて中村氏は「コードが世の中に多大な影響を及ぼしている現状に感銘を受けた」という。
「ちょっとやってみようかなぁ」と、そんな軽いノリでプログラミングをはじめたものの、あまりにのめり込んでしまい、当初予定していた就職はやめて、大学院に進学。コンピューターサイエンスを専攻し、「ヒューマンコンピューターインタラクション」についての研究に携わった。
大学院の卒業後、中村氏はチームラボに入社した。「院生の間でWebアプリやスマートフォン用のアプリをプライベートとアルバイトの両方で作っていたが、一人で開発できる規模に飽きていた。チームラボに入社したのは、一人ではやりにくい実空間を手掛けることに興味を持ったから」と話す。ここで、プロダクトデザインのツールとの距離が一気に縮まっていく。
チームラボで、中村氏はインスタレーションの開発に携わることになった。インスタレーション開発では、CG技術で映像を作り、プロジェクションマッピングやLEDなどを通じて実空間の演出を携わる。そこで「空間の中にCGを表現する」という世界に興味を持ったという。
チームラボで知り合った建築家の浜田晶則氏による「NSKRプロジェクト」にも、プライベートの活動として関わることになった。そのとき、Web上で動く、建物のモデリングソフト開発に携わった。そのプロジェクトを見た建築系スタートアップ「VUILD」の秋吉浩気氏が中村氏に声をかけ、現在はVUILDでもCGツール開発に取り組んでいる。
さらにVUILDを通じて知り合った建築系プログラマーの堀川淳一郎氏とは、Grasshopperのファイルを解析してWeb上で同じ動作を再現する仕組みを開発した。その仕事に取り組む中で、後にNodiとなる、ノードベースプログラミングエディターとプロシージャルモデリングを掛けあわせたツールを作ろうと思い立ったという。このときもやはり、「ちょっとやってみようかなぁ」という感覚だったとのことだ。
今後はユーザーの要望に応じて機能拡張し、正式版リリースに向け開発を進めていくとのことだ。基本は無料で使えるサービスを目指すが、「サーバー費用などを負担してもらう程度に料金をいただくことにはなるかもしれない」(中村氏)と話す。
Nodiを公開すると企業からも引き合いが来るようになり、将来的にはビジネスになる兆しは見えているという。
仕事の傍らであっても、趣味がてらであるので、Nodiの開発にたくさんの時間が割かれても苦になることはない。「面白そう」「ちょっとやってみようかなぁ」という気持ちに素直になって動いてアウトプットを出し続けたことで、ビジネスもそこに付いて来つつある。
中村氏は、何かに気負うことなく、好きなことを心から楽しんでいるだけに見える。企業勤めのエンジニアからすると、とても幸せそうで、うらやましくも感じる状況かもしれない。
取材協力:DiGITAL ARTISAN
新型コロナウイルス感染拡大防止のため、fabcross編集部では、記事作成にあたって
極力テレビ会議アプリやメッセージアプリなどを利用しています。
また、ものづくりや対面での取材が伴う記事では、社会的距離を取り、接触を避けるなどの配慮をしています。
※本記事は2020年2月27日に取材しています。