src/gl/S3GLTriangleIndex.js
import S3TriangleIndex from "../basic/S3TriangleIndex.js";
import S3GLTriangleIndexData from "./S3GLTriangleIndexData.js";
import S3Vector from "../math/S3Vector.js";
/**
* WebGL描画用の三角形インデックスクラス。
* 基本のS3TriangleIndexを拡張し、GL用属性データ生成(S3GLTriangleIndexData化)などを追加しています。
* 頂点インデックス・マテリアル番号・UV座標などの情報を持ち、WebGL向け処理の土台となります。
*
* @class
* @extends S3TriangleIndex
* @module S3
*/
export default class S3GLTriangleIndex extends S3TriangleIndex {
/**
* ABCの頂点を囲む三角形ポリゴンを作成します。
* @param {number} i1 配列内の頂点Aのインデックス
* @param {number} i2 配列内の頂点Bのインデックス
* @param {number} i3 配列内の頂点Cのインデックス
* @param {Array<number>} indexlist 頂点インデックス配列
* @param {number} [materialIndex] 使用するマテリアルのインデックス(省略時や負値の場合は0)
* @param {Array<S3Vector>} [uvlist] UV座標配列(S3Vector配列、なくても可)
*/
constructor(i1, i2, i3, indexlist, materialIndex, uvlist) {
super(i1, i2, i3, indexlist, materialIndex, uvlist);
}
/**
* この三角形インデックスのクローン(複製)を作成します。
* @returns {S3GLTriangleIndex} 複製されたS3GLTriangleIndexインスタンス
*/
clone() {
// @ts-ignore
return super.clone(S3GLTriangleIndex);
}
/**
* 三角形の頂点順序を反転した新しいインスタンスを作成します。
* モデルの表裏を逆転したい場合などに利用します。
* @returns {S3GLTriangleIndex} 頂点順序を逆にした新しい三角形インデックス
*/
inverseTriangle() {
// @ts-ignore
return super.inverseTriangle(S3GLTriangleIndex);
}
/**
* この三角形の情報をWebGL用属性データ(S3GLTriangleIndexData)として生成します。
* 法線・UV・接線等も含めた拡張情報付きで返します。
* @returns {S3GLTriangleIndexData} WebGL向け属性データ
*/
createGLTriangleIndexData() {
return new S3GLTriangleIndexData(this);
}
}