Metaio 改变几何纹理
Metaio Change Geometry Texture
我尝试在 metaio sdk 中加载一个带有纹理的 3D 模型。但是现在我有一个新的挑战:
假设我有一个 3D 汽车模型,我想在 Metaio sdk 中加载它并在用户点击屏幕时改变汽车的颜色。
怎么做到的?
通常,3d 模型与其纹理之间的关系是什么?我们可以为它提供 单个 3d 模型和 多个 纹理,并在运行时绑定它们吗?怎么样?
谢谢
是的,您可以使用 IGeometry
对象的 setTexture
来拥有多个纹理。
根据您使用的模型类型,纹理可以存储在模型本身或同名文件中。当我尝试将多个纹理存储在 MDL 文件中时,它不起作用,我不得不将它们分开存储。
你的代码应该是这样的:
@Override
protected void onGeometryTouched(IGeometry geometry) {
MetaioDebug.log("Template.onGeometryTouched: " + geometry);
geometry.setTexture(AssetsManager.getAssetPathAsFile(getApplicationContext(), "mytexture.png"));
}
如果您还没有处理触摸,您应该注册一个手势处理程序:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//other init code here...
mGestureMask = GestureHandler.GESTURE_ALL;
mGestureHandler = new GestureHandlerAndroid(metaioSDK, mGestureMask);
}
我尝试在 metaio sdk 中加载一个带有纹理的 3D 模型。但是现在我有一个新的挑战:
假设我有一个 3D 汽车模型,我想在 Metaio sdk 中加载它并在用户点击屏幕时改变汽车的颜色。
怎么做到的?
通常,3d 模型与其纹理之间的关系是什么?我们可以为它提供 单个 3d 模型和 多个 纹理,并在运行时绑定它们吗?怎么样?
谢谢
是的,您可以使用 IGeometry
对象的 setTexture
来拥有多个纹理。
根据您使用的模型类型,纹理可以存储在模型本身或同名文件中。当我尝试将多个纹理存储在 MDL 文件中时,它不起作用,我不得不将它们分开存储。
你的代码应该是这样的:
@Override
protected void onGeometryTouched(IGeometry geometry) {
MetaioDebug.log("Template.onGeometryTouched: " + geometry);
geometry.setTexture(AssetsManager.getAssetPathAsFile(getApplicationContext(), "mytexture.png"));
}
如果您还没有处理触摸,您应该注册一个手势处理程序:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//other init code here...
mGestureMask = GestureHandler.GESTURE_ALL;
mGestureHandler = new GestureHandlerAndroid(metaioSDK, mGestureMask);
}