図1303a
前項のサンプルとほぼ同じですが、シェーダが違います。リアルなライティングやフォグが施されています。
//初期化
void PtSphere::OnCreate() {
//中略
//描画コンポーネント
auto ptrDraw = AddComponent<BcPTStaticDraw>();
ptrDraw->SetFogEnabled(true);
//中略
}
図1303b
図1303c
//初期化
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);
}