FineKernelToolKit 4.2.13
読み取り中…
検索中…
一致する文字列を見つけられません
Model_CLI.h
[詳解]
1#pragma once
2
3#include <FK/Model.h>
4#include "Boundary_CLI.h"
5#include "Shape_CLI.h"
6#using <System.dll>
7
8namespace FK_CLI
9{
10 using namespace System::Collections::Generic;
11
13 public enum class fk_Draw : unsigned int {
14 NONE = 0,
15 POINT = 1 << 1,
16 LINE = 1 << 2,
17 FACE = 1 << 3,
18 BACK_FACE = ((1 << 4) | FACE),
19 FRONTBACK_FACE = ((1 << 5) | FACE),
20 TEXTURE = 1 << 6,
21 GEOM_LINE = 1 << 7,
22 GEOM_POINT = 1 << 8,
23 GEOM_FACE = 1 << 9
24 };
25
27 public enum class fk_ShadingMode : unsigned int {
28 GOURAUD,
29 PHONG
30 };
31
33 public enum class fk_BlendMode : unsigned int {
34 ALPHA = 0,
35 NEGATIVE = 1,
36 ADDITION = 2,
37 SCREEN = 3,
38 LIGHTEN = 4,
39 MULTIPLY = 5,
40 NONE = 128,
41 CUSTOM = 255
42 };
43
45 public enum class fk_BlendFactor : unsigned int {
46 ZERO = 0,
47 ONE = 1,
48 SRC_COLOR = 2,
50 DST_COLOR = 4,
52 SRC_ALPHA = 6,
54 DST_ALPHA = 8,
56 };
57
59 public enum class fk_DepthMode : unsigned int {
60 NO_USE = 0,
61 READ = 1,
62 WRITE = 2,
64 };
65
66 // 描画優先モード型
67 public enum class fk_ElementMode : unsigned int {
68 NONE = 0,
69 MODEL = 1,
70 ELEMENT = 2
71 };
72
73#if !defined(FK_DOXYGEN_USER_PROCESS)
74 public delegate void fk_DrawCallback();
75
76 public interface class fk_IBindableDrawer {
77 public:
78 event fk_DrawCallback^ PreDraw;
79 event fk_DrawCallback^ PostDraw;
80 };
81#endif
82
84
140 public ref class fk_Model : fk_Boundary {
141 internal:
142
143 static LinkedList<fk_Model^>^ modelList = gcnew LinkedList<fk_Model^>();
144 fk_Shape^ shape;
145 fk_DrawCallback^ preShader;
146 fk_DrawCallback^ postShader;
147
148#if !defined(FK_DOXYGEN_USER_PROCESS)
149 fk_Model(bool argNewFlg);
150 void MakeNativeModel(void);
151#endif
152
153 public:
154
155#if !defined(FK_DOXYGEN_USER_PROCESS)
156 fk_Model(::FK::fk_Model *argUnmanagedPtr);
157 ::FK::fk_Model * GetP(void);
158#endif
159
160 public:
163
166
169
172
174
179 property unsigned int ID {
180 unsigned int get();
181 }
182
184
191 property fk_Shape^ Shape {
192 fk_Shape^ get();
193 void set(fk_Shape^);
194 }
195
197
208 property fk_Model^ Parent {
209 void set(fk_Model^);
210 fk_Model^ get();
211 }
212
214
217
219
235 property fk_Material^ Material {
236 void set(fk_Material^);
237 fk_Material^ get();
238 }
239
241
246 property fk_Color^ PointColor {
247 fk_Color^ get();
248 void set(fk_Color^);
249 }
250
252
257 property fk_Color^ LineColor {
258 fk_Color^ get();
259 void set(fk_Color^);
260 }
261
263
268 property fk_Color^ CurveColor {
269 fk_Color^ get();
270 void set(fk_Color^);
271 }
272
274
278 property double PointSize {
279 void set(double);
280 double get();
281 }
282
284
287
289
313 property fk_Draw DrawMode {
314 void set(fk_Draw);
315 fk_Draw get();
316 }
317
319
327 property fk_ElementMode ElementMode {
328 void set(fk_ElementMode);
329 fk_ElementMode get();
330 }
331
333
346 property fk_ShadingMode ShadingMode {
347 void set(fk_ShadingMode);
348 fk_ShadingMode get();
349 }
350
352
359 property bool SmoothMode {
360 void set(bool);
361 bool get(void);
362 }
363
365
371 property bool ReverseDrawMode {
372 void set(bool);
373 bool get(void);
374 }
375
377
387 property fk_DepthMode DepthMode {
388 void set(fk_DepthMode);
389 fk_DepthMode get(void);
390 }
391
393
412 property fk_BlendMode BlendMode {
413 void set(fk_BlendMode);
414 fk_BlendMode get(void);
415 }
416
418
438 void set(fk_BlendFactor);
439 fk_BlendFactor get(void);
440 }
441
443
463 void set(fk_BlendFactor);
464 fk_BlendFactor get(void);
465 }
466
468
477 property bool ShadowEffect {
478 void set(bool);
479 bool get(void);
480 }
481
483
489 property bool ShadowDraw {
490 void set(bool);
491 bool get(void);
492 }
493
495
500 property bool FogMode {
501 void set(bool);
502 bool get(void);
503 }
504
506
509
511
517 property fk_Vector^ InhPosition {
518 fk_Vector^ get();
519 }
520
522
528 property fk_Vector^ InhVec {
529 fk_Vector^ get();
530 }
531
533
539 property fk_Vector^ InhUpvec {
540 fk_Vector^ get();
541 }
542
544
553 property fk_Angle^ InhAngle {
554 fk_Angle^ get();
555 }
556
558
564 property double InhScale {
565 double get();
566 }
567
569
580 property fk_Matrix^ InhMatrix {
581 fk_Matrix^ get();
582 }
583
585
597 property fk_Matrix^ InhInvMatrix {
598 fk_Matrix^ get();
599 }
600
602
615 property fk_Matrix^ InhBaseMatrix {
616 fk_Matrix^ get();
617 }
618
620
633 property fk_Matrix^ InhInvBaseMatrix {
634 fk_Matrix^ get();
635 }
636
638
641
643
652 property bool InterMode {
653 void set(bool);
654 bool get();
655 }
656
658
666 property bool InterStatus {
667 bool get();
668 }
669
671
717 property bool InterStopMode {
718 void set(bool);
719 bool get();
720 }
721
723
724#if !defined(FK_DOXYGEN_USER_PROCESS)
725
726 event fk_DrawCallback^ PreShader;
727 event fk_DrawCallback^ PostShader;
728
729 virtual void OnPreShader()
730 {
731 PreShader();
732 };
733 virtual void OnPostShader()
734 {
735 PostShader();
736 };
737
738 bool Equals(fk_Model^ argModel);
739#endif
742
744
763 bool SetParent(fk_Model^ model, bool mode);
764
766
781 bool SetParent(fk_Model^ model);
782
784
795 void DeleteParent(bool mode);
796
798
805 void DeleteParent(void);
806
808
827 bool EntryChild(fk_Model^ model, bool mode);
828
830
844 bool EntryChild(fk_Model^ model);
845
847
865 bool DeleteChild(fk_Model^ model, bool mode);
866
868
882 bool DeleteChild(fk_Model^ model);
883
885
897 void DeleteChildren(bool mode);
898
900
907 void DeleteChildren(void);
909
912
914
920 void SnapShot(void);
921
923
930 bool Restore(void);
931
933
947 bool Restore(double t);
949
952
954
971 void AdjustSphere(void);
972
974
993 void AdjustAABB(void);
994
996
1011 void AdjustOBB(void);
1012
1014
1030 void AdjustCapsule(void);
1031
1033
1053
1055
1075
1077
1101 void AdjustCapsule(fk_Vector^ S, fk_Vector^ E, bool mode);
1102
1104
1126
1129
1131
1155 bool IsInter(fk_Model^ model);
1156
1158
1201 bool IsCollision(fk_Model^ model, double %time);
1202
1204
1213 void ResetInter(void);
1215
1218
1220
1235
1237
1248
1250
1257
1261
1263
1287 bool GlRotate(fk_Vector^ origin, fk_Axis axis, double theta);
1288
1290
1314 bool GlRotate(double x, double y, double z, fk_Axis axis, double theta);
1315
1317
1338 bool GlRotate(fk_Vector^ A, fk_Vector^ B, double theta);
1339
1341
1366 bool GlRotate(double Ax, double Ay, double Az,
1367 double Bx, double By, double Bz, double theta);
1368
1370
1395 bool LoRotate(fk_Vector^ origin, fk_Axis axis, double theta);
1396
1398
1423 bool LoRotate(double x, double y, double z, fk_Axis axis, double theta);
1424
1426
1451 bool LoRotate(fk_Vector^ A, fk_Vector^ B, double theta);
1452
1454
1492 bool LoRotate(double Ax, double Ay, double Az,
1493 double Bx, double By, double Bz, double theta);
1494
1496
1519 bool GlRotateWithVec(fk_Vector^ origin, fk_Axis axis, double theta);
1520
1522
1547 bool GlRotateWithVec(double x, double y, double z, fk_Axis axis, double theta);
1548
1550
1572 bool GlRotateWithVec(fk_Vector^ A, fk_Vector^ B, double theta);
1573
1575
1601 bool GlRotateWithVec(double Ax, double Ay, double Az,
1602 double Bx, double By, double Bz, double theta);
1603
1605
1629 bool LoRotateWithVec(fk_Vector^ origin, fk_Axis axis, double theta);
1630
1632
1658 bool LoRotateWithVec(double x, double y, double z, fk_Axis axis, double theta);
1659
1661
1687 bool LoRotateWithVec(fk_Vector^ A, fk_Vector^ B, double theta);
1688
1690
1729 bool LoRotateWithVec(double Ax, double Ay, double Az,
1730 double Bx, double By, double Bz, double theta);
1732
1735
1737
1751
1753
1768 bool GlTranslate(double x, double y, double z);
1769
1771
1785
1787
1802 bool LoTranslate(double x, double y, double z);
1803
1805
1821
1823
1840 bool GlMoveTo(double x, double y, double z);
1842 };
1843}
1844
1845/****************************************************************************
1846 *
1847 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
1848 *
1849 * Redistribution and use in source and binary forms,
1850 * with or without modification, are permitted provided that the
1851 * following conditions are met:
1852 *
1853 * - Redistributions of source code must retain the above
1854 * copyright notice, this list of conditions and the
1855 * following disclaimer.
1856 *
1857 * - Redistributions in binary form must reproduce the above
1858 * copyright notice, this list of conditions and the
1859 * following disclaimer in the documentation and/or
1860 * other materials provided with the distribution.
1861 *
1862 * - Neither the name of the copyright holders nor the names
1863 * of its contributors may be used to endorse or promote
1864 * products derived from this software without specific
1865 * prior written permission.
1866 *
1867 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1868 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1869 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
1870 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
1871 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
1872 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1873 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1874 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1875 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1876 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1877 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1878 * POSSIBILITY OF SUCH DAMAGE.
1879 *
1880 ****************************************************************************/
1881/****************************************************************************
1882 *
1883 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
1884 *
1885 * 本ソフトウェアおよびソースコードのライセンスは、基本的に
1886 * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
1887 *
1888 * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
1889 * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
1890 *
1891 * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
1892 * および下記免責条項を含めること。
1893 *
1894 * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
1895 * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
1896 * 含めること。
1897 *
1898 * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
1899 * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
1900 * コントリビューターの名前を使用してはならない。
1901 *
1902 * 本ソフトウェアは、著作権者およびコントリビューターによって「現
1903 * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
1904 * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
1905 * に限定されない、いかなる保証もないものとします。著作権者もコン
1906 * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
1907 * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
1908 * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
1909 * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
1910 * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
1911 * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
1912 * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
1913 * ついて、一切責任を負わないものとします。
1914 *
1915 ****************************************************************************/
境界ボリュームを管理するクラス
Definition Boundary_CLI.h:60
モデルを生成、管理するクラス
Definition Model_CLI.h:140
fk_Color^ CurveColor
曲線色プロパティ
Definition Model_CLI.h:268
bool GlRotate(fk_Vector^ A, fk_Vector^ B, double theta)
グローバル座標系任意軸回転メソッド1
bool GlTranslate(fk_Vector^ v)
グローバル座標系平行移動メソッド1
fk_Draw DrawMode
描画モードプロパティ
Definition Model_CLI.h:313
void AdjustSphere(void)
境界球自動設定メソッド
fk_DepthMode DepthMode
前後関係制御プロパティ
Definition Model_CLI.h:387
bool IsCollision(fk_Model^ model, double % time)
モデル間衝突判定メソッド
bool DeleteChild(fk_Model^ model, bool mode)
子モデル解除メソッド1
bool SetParent(fk_Model^ model)
親モデル設定メソッド2
~fk_Model()
デストラクタ
bool GlMoveTo(double x, double y, double z)
グローバル座標系位置指定メソッド2
void AdjustOBB(void)
OBB 自動設定メソッド
bool LoRotateWithVec(fk_Vector^ origin, fk_Axis axis, double theta)
ローカル座標系座標軸回転(姿勢付き)メソッド1
bool LoRotateWithVec(double x, double y, double z, fk_Axis axis, double theta)
ローカル座標系座標軸回転(姿勢付き)メソッド2
bool LoTranslate(double x, double y, double z)
ローカル座標系平行移動メソッド2
bool GlMoveTo(fk_Vector^ p)
グローバル座標系位置指定メソッド1
fk_ShadingMode ShadingMode
シェーディングモード関連プロパティ
Definition Model_CLI.h:346
bool LoRotate(double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta)
ローカル座標系任意軸回転メソッド2
bool GlRotateWithVec(double x, double y, double z, fk_Axis axis, double theta)
グローバル座標系座標軸回転(姿勢付き)メソッド2
fk_Matrix^ InhMatrix
継承変換行列プロパティ
Definition Model_CLI.h:580
double InhScale
継承全体倍率プロパティ
Definition Model_CLI.h:564
void DeleteChildren(bool mode)
全子モデル解除メソッド1
fk_BlendMode BlendMode
ブレンドモード設定プロパティ
Definition Model_CLI.h:412
bool GlTranslate(double x, double y, double z)
グローバル座標系平行移動メソッド2
fk_Shape^ Shape
形状プロパティ
Definition Model_CLI.h:191
fk_Color^ LineColor
稜線色プロパティ
Definition Model_CLI.h:257
bool LoTranslate(fk_Vector^ v)
ローカル座標系平行移動メソッド1
bool Restore(double t)
位置・姿勢途中復元メソッド
fk_Color^ PointColor
頂点色プロパティ
Definition Model_CLI.h:246
bool EntryChild(fk_Model^ model, bool mode)
子モデル設定メソッド1
void AdjustCapsule(fk_Vector^ P, fk_Axis axis)
境界カプセル自動設定関数(中心軸上の点と座標軸)
fk_BlendFactor BlendSrcFactor
ブレンド時の入力ピクセル係数設定プロパティ
Definition Model_CLI.h:437
void DeleteInterModel(fk_Model^ model)
干渉自動停止モデル解除メソッド
void AdjustCapsule(void)
境界カプセル自動設定メソッド(全自動)
bool LoRotate(double x, double y, double z, fk_Axis axis, double theta)
ローカル座標系座標軸回転メソッド2
void ClearInterModel(void)
干渉自動停止モデル初期化メソッド
bool GlRotateWithVec(double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta)
グローバル座標系任意軸回転(姿勢付き)メソッド2
bool ShadowDraw
影表示プロパティ
Definition Model_CLI.h:489
bool SetParent(fk_Model^ model, bool mode)
親モデル設定メソッド1
bool ShadowEffect
影投影プロパティ
Definition Model_CLI.h:477
fk_Matrix^ InhInvBaseMatrix
継承移動・回転要素逆変換行列プロパティ
Definition Model_CLI.h:633
void DeleteChildren(void)
全子モデル解除メソッド2
bool LoRotateWithVec(double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta)
ローカル座標系任意軸回転(姿勢付き)メソッド2
bool LoRotate(fk_Vector^ origin, fk_Axis axis, double theta)
ローカル座標系座標軸回転メソッド1
fk_Vector^ InhUpvec
継承アップベクトルプロパティ
Definition Model_CLI.h:539
bool ReverseDrawMode
描画順序制御プロパティ
Definition Model_CLI.h:371
fk_Material^ Material
マテリアルプロパティ
Definition Model_CLI.h:235
void AdjustCapsule(fk_Vector^ S, fk_Vector^ E, bool mode)
境界カプセル自動設定メソッド(中心軸直接指定, 順番指定付)
bool FogMode
霧効果プロパティ
Definition Model_CLI.h:500
void AdjustAABB(void)
AABB 自動設定メソッド
bool InterStatus
干渉継続状態プロパティ
Definition Model_CLI.h:666
fk_Model()
コンストラクタ
void DeleteParent(bool mode)
親モデル解除メソッド1
bool GlRotateWithVec(fk_Vector^ A, fk_Vector^ B, double theta)
グローバル座標系任意軸回転(姿勢付き)メソッド1
bool IsInter(fk_Model^ model)
モデル間干渉判定メソッド
bool GlRotate(double x, double y, double z, fk_Axis axis, double theta)
グローバル座標系座標軸回転メソッド2
bool GlRotate(double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta)
グローバル座標系任意軸回転メソッド2
fk_Matrix^ InhInvMatrix
継承逆変換行列プロパティ
Definition Model_CLI.h:597
void EntryInterModel(fk_Model^ model)
干渉自動停止モデル登録メソッド
void SnapShot(void)
位置・姿勢保存メソッド
bool GlRotate(fk_Vector^ origin, fk_Axis axis, double theta)
グローバル座標系座標軸回転メソッド1
bool EntryChild(fk_Model^ model)
子モデル設定メソッド2
bool DeleteChild(fk_Model^ model)
子モデル解除メソッド2
bool InterStopMode
干渉自動停止モードプロパティ
Definition Model_CLI.h:717
void ResetInter(void)
干渉継続状態初期化メソッド
fk_Matrix^ InhBaseMatrix
継承移動・回転要素変換行列プロパティ
Definition Model_CLI.h:615
bool GlRotateWithVec(fk_Vector^ origin, fk_Axis axis, double theta)
グローバル座標系座標軸回転(姿勢付き)メソッド1
void AdjustCapsule(fk_Vector^ S, fk_Vector^ E)
境界カプセル自動設定メソッド(中心軸直接指定, 順番指定付)
unsigned int ID
ID プロパティ
Definition Model_CLI.h:179
void DeleteParent(void)
親モデル解除メソッド2
bool LoRotate(fk_Vector^ A, fk_Vector^ B, double theta)
ローカル座標系任意軸回転メソッド1
bool LoRotateWithVec(fk_Vector^ A, fk_Vector^ B, double theta)
ローカル座標系任意軸回転(姿勢付き)メソッド1
fk_Model^ Parent
親モデルプロパティ
Definition Model_CLI.h:208
bool InterMode
干渉継続モード設定メソッド
Definition Model_CLI.h:652
fk_ElementMode ElementMode
要素モード関連プロパティ
Definition Model_CLI.h:327
void AdjustCapsule(fk_Axis axis)
境界カプセル自動設定メソッド(座標軸による中心軸設定)
fk_Angle^ InhAngle
継承オイラー角参照メソッド
Definition Model_CLI.h:553
bool SmoothMode
スムースモードプロパティ
Definition Model_CLI.h:359
fk_Vector^ InhPosition
継承位置ベクトルプロパティ
Definition Model_CLI.h:517
double PointSize
頂点描画サイズプロパティ
Definition Model_CLI.h:278
fk_BlendFactor BlendDstFactor
ブレンド時の出力ピクセル係数設定プロパティ
Definition Model_CLI.h:462
bool Restore(void)
位置・姿勢復元メソッド
fk_Vector^ InhVec
継承方向ベクトルプロパティ
Definition Model_CLI.h:528
形状用基底クラス
Definition Shape_CLI.h:29
3次元ベクトルを管理するクラス
Definition Vector_CLI.h:35
Definition AppWindow_CLI.h:11
fk_BlendFactor
ブレンド係数型
Definition Model_CLI.h:45
@ ONE_MINUS_DST_COLOR
Dr,Dg,Db
@ ONE_MINUS_SRC_COLOR
Sr,Sg,Sb
fk_DepthMode
デプス読み書きモード型
Definition Model_CLI.h:59
@ NO_USE
デプスバッファの参照も更新せず、常に上書きします
@ READ
デプスバッファを参照し、前後関係のチェックを行います
@ WRITE
デプスバッファに書き込みを行い、更新します
@ READ_AND_WRITE
デプスバッファの参照と書き込みを共に行います(初期値)
fk_ShadingMode
シェーディングモードを表す列挙型
Definition Model_CLI.h:27
@ PHONG
フォンシェーディング
@ GOURAUD
グーローシェーディング
fk_Draw
モデルの描画モードを表す列挙型
Definition Model_CLI.h:13
@ FRONTBACK_FACE
面(両面)描画
@ LINE
稜線描画
@ BACK_FACE
面(裏側)描画
@ FACE
面(表側)描画
@ TEXTURE
テクスチャ描画
@ GEOM_LINE
曲線・曲面グリッド描画
@ POINT
頂点描画
@ GEOM_FACE
曲面描画
@ NONE
表示要素なし
@ GEOM_POINT
曲線・曲面点描画
fk_BlendMode
ブレンドモード型
Definition Model_CLI.h:33
@ ALPHA
アルファブレンド(デフォルト)
@ CUSTOM
カスタム
@ LIGHTEN
比較(明)
@ NONE
ブレンドなし
@ SCREEN
スクリーン
fk_ElementMode
Definition Model_CLI.h:67
@ MODEL
モデル設定優先
@ ELEMENT
要素個別設定優先
fk_Axis
座標軸を表す列挙型
Definition Vector_CLI.h:10