如何在java3d中为加载的OBJ文件指定纹理

时间:2011-09-12 13:20:17

标签: java 3d textures java-3d

我有一个java 3d应用程序和这个应用程序我将OBJ文件加载到我的场景中。如何为此模型指定纹理(jpg文件)? 更确切地说,当我想将纹理分配给原始java对象(例如球体)时,我使用以下内容:

Sphere sphere = new Sphere(Radius, Primflags, Appearance);

但是,在加载和添加obj文件时,我会这样做:

Scene scene = getSceneFromFile("OBJ file");
myBranchGroup = scene.getSceneGroup();

在第二种情况下,我找不到分配纹理的方法。我该怎么做?

2 个答案:

答案 0 :(得分:1)

您必须使用您制作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);
 int primflags = Primitive.GENERATE_NORMALS
    + Primitive.GENERATE_TEXTURE_COORDS;
    ObjectFile loader = new ObjectFile(ObjectFile.RESIZE);

然后在将模型指定给场景之前添加此项。假设3D模型变得模糊,称为模型

model.setAppearance(ap);

答案 1 :(得分:0)

IIRC您需要从分支组中获取要应用纹理的Shape3D节点(调用setAppearance(...)),例如通过使用getChild(index)等等。请注意,您可能会以递归方式遍历子项,因为您获得的分支组实际上可能包含其他组,因此您可能会在组树的下方找到形状。

或者,您应该能够将AlternateAppearance对象添加到分支组。

相关问题