先にご返信されていた MORさんのお書き込みが消えてしまったので遅ればせながらご返信します
現在の機能ではマテリアルやテクスチャを無効にして複製する機能はありませんので、
お手数で申し訳ありませんが通常描画用のモデルとは別にマテリアルを無効にするモデルを別途 MV1LoadModel で
作成していただき、以下の『全てのマテリアルのテクスチャを真っ白テクスチャにして、且つ色設定も同じにする』という
方法を採ってください m(_ _)m
// DxChara.x の全テクスチャを真っ白に、色設定も真っ白にしてアニメーションを再生するプログラム
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int ModelHandle, AttachIndex ;
float TotalTime, PlayTime ;
int WhiteTexture ;
// ウィンドウモードで起動
ChangeWindowMode( TRUE ) ;
// 背景を灰色に設定
SetBackgroundColor( 128,128,128 ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 )
{
// エラーが発生したら直ちに終了
return -1 ;
}
// 真っ白のテクスチャを作成する
WhiteTexture = MakeScreen( 16, 16, FALSE ) ;
SetDrawScreen( WhiteTexture ) ;
DrawBox( 0, 0, 16, 16, GetColor( 255,255,255 ), TRUE ) ;
// 3Dモデルの読み込み
ModelHandle = MV1LoadModel( "DxChara.x" ) ;
// 全てのマテリアルを一定の色+真っ白テクスチャにする
{
// テクスチャ 0番を真っ白テクスチャにする
MV1SetTextureGraphHandle( ModelHandle, 0, WhiteTexture, FALSE ) ;
// マテリアルの数を取得
int MaterialNum = MV1GetMaterialNum( ModelHandle ) ;
// マテリアルの数だけ繰り返し
for( int i = 0 ; i < MaterialNum ; i ++ )
{
// マテリアルタイプを標準タイプにする
MV1SetMaterialType( ModelHandle, i, DX_MATERIAL_TYPE_NORMAL ) ;
// ブレンドモードをブレンドなしに設定
MV1SetMaterialDrawBlendMode( ModelHandle, i, DX_BLENDMODE_NOBLEND ) ;
MV1SetMaterialDrawBlendParam( ModelHandle, i, 255 ) ;
// マテリアルの色情報をすべて同じにする
MV1SetMaterialDifColor( ModelHandle, i, GetColorF( 1.0f, 1.0f, 1.0f, 1.0f ) ) ;
MV1SetMaterialSpcColor( ModelHandle, i, GetColorF( 0.0f, 0.0f, 0.0f, 0.0f ) ) ;
MV1SetMaterialEmiColor( ModelHandle, i, GetColorF( 0.0f, 0.0f, 0.0f, 0.0f ) ) ;
MV1SetMaterialAmbColor( ModelHandle, i, GetColorF( 0.2f, 0.2f, 0.2f, 0.2f ) ) ;
// テクスチャは真っ白テクスチャである 0番に設定
MV1SetMaterialDifMapTexture( ModelHandle, i, 0 ) ;
}
}
// 画面に映る位置に3Dモデルを移動
MV1SetPosition( ModelHandle, VGet( 320.0f, -300.0f, 600.0f ) ) ;
// 3Dモデルの0番目のアニメーションをアタッチする
AttachIndex = MV1AttachAnim( ModelHandle, 0, -1, FALSE ) ;
// アタッチしたアニメーションの総再生時間を取得する
TotalTime = MV1GetAttachAnimTotalTime( ModelHandle, AttachIndex ) ;
// 描画先を裏画面に変更
SetDrawScreen( DX_SCREEN_BACK ) ;
// 再生時間の初期化
PlayTime = 0.0f ;
// 何かキーが押されるかウインドウが閉じられるまでループ
while( ProcessMessage() == 0 && CheckHitKeyAll() == 0 )
{
// 画面をクリア
ClearDrawScreen() ;
// 再生時間を進める
PlayTime += 100.0f ;
// 再生時間がアニメーションの総再生時間に達したら再生時間を0に戻す
if( PlayTime >= TotalTime )
{
PlayTime = 0.0f ;
}
// 再生時間をセットする
MV1SetAttachAnimTime( ModelHandle, AttachIndex, PlayTime ) ;
// 3Dモデルの描画
MV1DrawModel( ModelHandle ) ;
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}