2013-03-01 37 views
0

我目前正在基於GoblinXNA提供的原始「Tutorial 8 - Marker Tracking」程序開發AR項目。我已經玩過了,用一些我自己的設計替換了模型,保存爲.fbx格式。我遇到的問題是.Diffuse擴展名正在用紅色替換模型的原始顏色;改變顏色並沒有什麼區別,只是改變顏色,不讓我具有模型的原始外觀,並刪除.Diffuse代碼行只會使模型變成灰色和黑色的陰影(我猜這是對用CreateLights()方法嗎?)從FBX模型中刪除.Diffuse顏色

無論如何,這裏是代碼形式的對象;任何幫助將非常感激!

ModelLoader mLoader = new ModelLoader(); //self explanatory 
    Model flagModel = (Model)mLoader.Load("", "FlagModelAsset2"); 

    flagNode = new GeometryNode("FlagModelAsset2"); 
    flagNode.Model = flagModel; 
    flagNode.AddToPhysicsEngine = true; 
    flagNode.Physics.Shape = ShapeType.Box; 
    flagNode.Model.ShadowAttribute = ShadowAttribute.ReceiveCast; 
    flagNode.Model.Shader = new SimpleShadowShader(scene.ShadowMap); 

    //TransformNode flagTransNode = new TransformNode(); 
    //flagTransNode.Translation = new Vector3(0, 0, 0); //position of flag 
    //flagTransNode.Scale = new Vector3(1f, 1f, 1f); //size of flag 

    toolbarMarkerNode = new MarkerNode(scene.MarkerTracker, "ALVARToolbar.xml"); 

    Material flagMaterial = new Material(); 
    flagMaterial.Diffuse = new Vector4(0.5f, 2, 0, 1); //colour of flag 
    flagMaterial.Specular = Color.White.ToVector4(); 
    flagMaterial.SpecularPower = 10; 

    flagNode.Material = flagMaterial; 

    groundMarkerNode.AddChild(flagNode); 
    scene.RootNode.AddChild(toolbarMarkerNode); 
    //flagNode.AddChild(flagTransNode);    


    NewtonPhysics.CollisionPair pair = new NewtonPhysics.CollisionPair(flagNode.Physics, sphereNode.Physics); 
    ((NewtonPhysics)scene.PhysicsEngine).AddCollisionCallback(pair, BoxSphereCollision); 
} 

回答

0

這是材料;刪除並添加下面的代碼允許使用來自原始導入文件的紋理

((Model)flagNode.Model).UseInternalMaterials = true;