我将环形(obj文件)的3d模型加载到我的程序中,使用以下行:
Shape3D torus=null;
Scene t1 = getSceneFromFile("Some local path\torus.obj");
然后我使用以下代码从场景中获取模型:
BranchGroup branchGroup = t1.getSceneGroup();
torus = (Shape3D) branchGroup.getChild(0);
以下代码将图像设置为纹理,然后将该纹理应用于Appearance对象。
TextureLoader textureLoader=new TextureLoader("Another local path\myImage.jpg",null);
ImageComponent2D image=textureLoader.getImage();
Texture2D texture=new Texture2D(Texture.BASE_LEVEL,Texture.RGBA,image.getWidth(),image.getHeight());
texture.setImage(0, image);
Appearance app = new Appearance();
app.setTexture(texture);
torus.setAppearance(app);
当我运行代码时,圆环模型正确加载但纹理未正确分配。更准确地说,整个3D模型具有单一颜色而不是图像作为纹理。提到的颜色是图像左下角像素的颜色。
解决方案是什么? 提前谢谢。
答案 0 :(得分:0)
程序,例如Mudbox您用来创建obj文件,也允许您分配UV模型图像。指定绘制图层而不是将其导出为正确的格式。认为这可以加载纹理,你不会有最好的细节到obj。请尝试使用此纹理加载器代码。
static TextureLoader loader = new TextureLoader("C:\\Users\\Sawyera\\Desktop\\Paint Layer 1.jpg",
"RGP", new Container());
static Texture texture = loader.getTexture();
texture.setBoundaryModeS(Texture.WRAP);
texture.setBoundaryModeT(Texture.WRAP);
texture.setBoundaryColor(new Color4f(0.0f, 1.0f, 0.0f, 0.0f));
TextureAttributes texAttr = new TextureAttributes();
texAttr.setTextureMode(TextureAttributes.MODULATE);
Appearance ap = new Appearance();
ap.setTexture(texture);
ap.setTextureAttributes(texAttr);
然后取你的3D模型名称,例子挖掘巧妙命名的模型,并设置外观为ap或
model.setAppearance(ap);
如果您最初拥有它,这将加载几乎100%。加载纹理strait不会将其加载到所需的coridants。