図0404a
前項のサンプルとほぼ同じですが、シェーダが違います。リアルなライティングやフォグが施されています。
void PtSphere::OnCreate() {
//中略
//描画コンポーネント
auto PtrDraw = AddComponent<BcPTStaticDraw>();
PtrDraw->SetFogEnabled(true);
//中略
}
図0404b
図0404c
//初期化
void StaticChara::OnCreate() {
//中略
if (m_TamgentUse) {
auto PtrDraw = AddComponent<BcPNTnTStaticModelDraw>();
PtrDraw->SetFogEnabled(true);
PtrDraw->SetMeshResource(L"MODEL_MESH_WITH_TAN");
PtrDraw->SetNormalMapTextureResource(L"MODEL_NORMAL_TX");
PtrDraw->SetMeshToTransformMatrix(SpanMat);
}
else {
auto PtrDraw = AddComponent<BcPNTStaticModelDraw>();
PtrDraw->SetFogEnabled(true);
PtrDraw->SetMeshResource(L"MODEL_MESH");
PtrDraw->SetMeshToTransformMatrix(SpanMat);
}
}
//初期化
void BoneChara::OnCreate() {
//中略
if (m_TamgentUse) {
//描画コンポーネントの設定
auto PtrDraw = AddComponent<BcPNTnTBoneModelDraw>();
PtrDraw->SetFogEnabled(true);
//描画するメッシュを設定
PtrDraw->SetMeshResource(L"Chara_R_MESH_WITH_TAN");
PtrDraw->SetNormalMapTextureResource(L"Chara_R_NORMAL_TX");
PtrDraw->SetMeshToTransformMatrix(SpanMat);
PtrDraw->AddAnimation(L"Default", 0, 100, true, 20.0f);
PtrDraw->ChangeCurrentAnimation(L"Default");
}
else {
//描画コンポーネントの設定
auto PtrDraw = AddComponent<BcPNTBoneModelDraw>();
PtrDraw->SetFogEnabled(true);
//描画するメッシュを設定
PtrDraw->SetMeshResource(L"Chara_R_MESH");
PtrDraw->SetMeshToTransformMatrix(SpanMat);
PtrDraw->AddAnimation(L"Default", 0, 100, true, 20.0f);
PtrDraw->ChangeCurrentAnimation(L"Default");
}
//透明処理
SetAlphaActive(true);
}
void Scene::CreateResourses() {
//中略
//ボーンモデルの通常リソース
auto ModelMesh = MeshResource::CreateBoneModelMesh(DataDir, L"Chara_R.bmf");
App::GetApp()->RegisterResource(L"Chara_R_MESH", ModelMesh);
//ボーンモデルのタンジェント付きリソース
ModelMesh = MeshResource::CreateBoneModelMeshWithTangent(DataDir, L"Chara_R.bmf");
App::GetApp()->RegisterResource(L"Chara_R_MESH_WITH_TAN", ModelMesh);
//法線マップ
strTexture = DataDir + L"Chara_R_narmal.png";
App::GetApp()->RegisterTexture(L"Chara_R_NORMAL_TX", strTexture);
//ボーンモデル(マルチメッシュ)の通常リソース
auto MultiModelMesh
= MultiMeshResource::CreateBoneModelMultiMesh(DataDir, L"Object_WalkAnimation.bmf");
App::GetApp()->RegisterResource(L"Object_WalkAnimation_MESH", MultiModelMesh);
//ボーンモデル(マルチメッシュ)のタンジェント付きリソース
MultiModelMesh
= MultiMeshResource::CreateBoneModelMultiMeshWithTangent(DataDir, L"Object_WalkAnimation.bmf");
App::GetApp()->RegisterResource(L"Object_WalkAnimation_MESH_WITH_TAN", MultiModelMesh);
//法線マップ
strTexture = DataDir + L"Tx_Checker_Normal.png";
App::GetApp()->RegisterTexture(L"OBJECT_NORMAL_TX", strTexture);
//スタティックモデルの通常リソース
auto StaticModelMesh = MeshResource::CreateStaticModelMesh(DataDir, L"Character_01.bmf");
App::GetApp()->RegisterResource(L"MODEL_MESH", StaticModelMesh);
//スタティックモデルのタンジェント付きリソース
StaticModelMesh = MeshResource::CreateStaticModelMeshWithTangent(DataDir, L"Character_01.bmf");
App::GetApp()->RegisterResource(L"MODEL_MESH_WITH_TAN", StaticModelMesh);
//法線マップ
strTexture = DataDir + L"Character_2_normal.png";
App::GetApp()->RegisterTexture(L"MODEL_NORMAL_TX", strTexture);
//スタティックモデル(マルチメッシュ)の通常リソース
auto StaticMultiModelMesh
= MultiMeshResource::CreateStaticModelMultiMesh(DataDir, L"ObjectOnly.bmf");
App::GetApp()->RegisterResource(L"ObjectOnly_MESH", StaticMultiModelMesh);
//スタティックモデル(マルチメッシュ)のタンジェント付きリソース
StaticMultiModelMesh
= MultiMeshResource::CreateStaticModelMultiMeshWithTangent(DataDir, L"ObjectOnly.bmf");
App::GetApp()->RegisterResource(L"ObjectOnly_MESH_WITH_TAN", StaticMultiModelMesh);
}