このマテリアルのシェーディングモデルを、siShadingModel 列挙型の値の 1 つとして戻します。マテリアルにアタッチされたmental ray シェーダは、通常OpenGLでは正確に表現できません。ただしSoftimage では、これらのシェーダを近似する最適なOpenGl シェーディングモデルの推測が試みられます。Softimage では、シェーディングモデルは、シェーダ開発者が提供するシェーダパラメータ上の特定のマーク(SPDL内のui "mapping" = "guid"構文を使用)に基づいて選択されます。これらのマークは、パラメータをディフューズ カラー、スペキュラ カラーなどとして解釈できるかどうかを、Softimage に知らせます。これらのマークの有無によって、Softimage はシェーディング モデルを推測します。たとえば、ディフューズ、スペキュラ、およびアンビエントのようなパラメータがある場合、Softimage では Phong シェーディングモデルが選択されます(OpenGLでは、実際にはGourauD です)。ディフューズおよびアンビエントのようなパラメータのみが存在する場合は、代わりにLambert が使用されることになります(Lambert シェーディングモデルにはスペキュラカラーがないからです)。アンビエントのみが存在する場合は、Constant が使用されます。
// get accessor siShadingModel rtn = OGLMaterial.ShadingModel; |
dim grid, oglMat set grid = ActiveProject.ActiveScene.Root.AddGeometry("Grid", "MeshSurface") ' First put a Phong shader on instead ApplyShader "Phong", grid set oglMat = grid.Material.OGLMaterial Application.LogMessage "OGL material shading model: " & oglMat.ShadingModel ' Now put a Lambert shader on instead ApplyShader "Lambert", grid set oglMat = grid.Material.OGLMaterial Application.LogMessage "OGL material shading model: " & oglMat.ShadingModel ' Finally, a constant shader ApplyShader "Constant", grid set oglMat = grid.Material.OGLMaterial Application.LogMessage "OGL material shading model: " & oglMat.ShadingModel |