FOLD (Flexible Origami List Data Structure) は、折り目パターン、山谷パターン、折り畳まれた状態などの折り紙モデルを記述するためのファイル形式 (拡張子.fold
) です。主に、FOLD ファイルには頂点、エッジ、面を含むメッシュを保存できます。 、およびそれらの間のリンク。オプションの 2D または 3D ジオメトリに加えて、幾何学的に重なる面のトポロジカルな積み重ね順序を追加します。メッシュには、追加のユーザー定義データを簡単に保存することもできます。 1 つの FOLD ファイルで、そのようなメッシュを複数「フレーム」に保存することもできます (ただし、この機能はどのコードでもまだサポートされていません)。
このリポジトリは、FOLD 形式 (まだ初期段階にあるため定義が進化中)について文書化し、FOLD ファイルの操作を支援する Webソフトウェア ツールとJavaScript ライブラリを提供します。 FOLD はJSON (JavaScript Object Notation) に基づいて構築されているため、パーサーは基本的にすべてのプログラミング言語で使用できます。解析されると、この形式はソフトウェアで折り畳みを表現するための典型的なデータ構造としても機能します。私たちのライブラリは、メッシュをナビゲートするための有用な冗長データ構造の構築にも役立ちます。
FOLD は、3D メッシュを保存するための OBJ 形式 (および他の同様の形式) と精神的に似ています。その主な特徴は、解析が容易であること、拡張性が容易であること、重なり合う面を重なり順で明確にする機能、エッジを定義する機能、つまりエッジのプロパティ (山と谷の割り当てなど) および任意の多面体複合体を定義できることです。 (エッジがないと、OBJ は、連続する 2 つの頂点を共有する 2 つの面とエッジを共有する面を区別できません。) さらに、FOLD はリンケージ(1D エッジはあるが 2D 面はありません) をサポートできます。
以下は、このプロジェクト内および他の人によって構築された、FOLD 形式をサポートするソフトウェアです。
単純な Web アプリの場合は、次のタグを HTML に追加します: <script src="https://edemaine.github.io/fold/dist/fold.js"></script>
(またはdist/fold.js
のローカル コピーを保存します) dist/fold.js
作成し、それを使用します)。次に、 FOLD = require('fold')
JavaScript/CoffeeScript コードに追加すると、 FOLD.moduleName.functionName
経由でライブラリにアクセスできます (例: FOLD.filter.collapseNearbyVertices
)。
Node アプリの場合は、 npm install --save fold
だけです。次に、 FOLD = require('fold')
を JavaScript/CoffeeScript コードに追加します。次に、 FOLD.moduleName.functionName
経由でライブラリにアクセスします (例: FOLD.filter.collapseNearbyVertices
。
FOLD ライブラリ API には、FOLD オブジェクトを操作するために使用できるモジュールと関数が文書化されています。 .fold
ファイルがある場合は、まずJSON.parse(fileContents)
で解析して FOLD オブジェクトを取得します。
JavaScript ライブラリは、 fold-convert
と呼ばれるコマンドライン インターフェイスも提供します。これを使用するには、Node.js がインストールされていることを確認し、コマンド ラインからnpm install -g fold
実行します。その後、次の機能を使用できるようになります。
fold-convert -o .fold *.opx
: ORIPA .opx
ファイルを.fold
に変換します。fold-convert --flat-fold -o B.fold A.fold
: 平坦折り折り目パターンA
折り畳まれたジオメトリB
に変換しますFOLD フォーマットは 3 人によって考案されました。
フィードバックやご提案をお待ちしております。目標は、計算折り紙のすべてのソフトウェアが共通の交換形式として FOLD をサポートすることです。