!!!texture_interface バグ?2005/11/2記載。 若干使用方法が変わりました。 //ローカル座標上の(fx, fy, fz)での形状上の色を取得 vec2 uv = vec2(tu, tv); //対応するuv値 compointer t(shape->create_texture_interface( 0, vec3(0, 0, 0), vec3(0, 0, 0), vec3(0, 0, 0), vec3(0, 0, 0), &uv, 0, 0)); //ローカル座標上での対応点の指定 t->set_position(vec3(fx, fy, fz)); // シェーディング計算を更新(Shade8で追加された関数) t->update(); //指定点での表面色の取得 col = t->get_diffuse(); // Shade8で追加された関数。update後に呼ぶこと texture_interfaceにて、「3次元空間上の指定位置のデフューズ値(色情報)」 を取得することができます。テクスチャや大理石などのプロシージャルなテクスチャ設定がされている場合でも最終的なピクセル色が取得できます。「ローカル座標位置」「対応する位置でのUV」を 渡すことにより、Shade内部でシェーディング計算が行われます。 Shade7.5までは、デフューズパラメータのみ取得できましたが、Shade8以降では デフューズ・スペキュラ・透過・反射・発光・法線・トリムで抜くかどうか、 などの各種パラメータを取得できるようになっています。 そのためか仕様変更がもっともダイナミックに起こったクラスのうちの1つです。 まず、各種パラメータ(ローカル座標位置とUV)を指定後、 「texture_interface::update」にてシェーディング計算を行う必要があります。 Shade7.5よりも若干遅くなったように感じます(デフューズ以外の計算も発生しているため)。 その後「texture_interface::get_diffuse」などで値を取得します。 「texture_interface::get_diffuse_color」は廃止になりました。 しかし・・・、どうもShade8SDKでは仕様通りに動いていない気がします。 「get_diffuse」でRGB(1.0f, 1.0f, 1.0f)しか返ってこないです。 やり方がまずいのかもしれませんが、また調査次第ご報告します。