我有一个 java 3d 应用程序,该应用程序将 OBJ 文件加载到我的场景中。如何为该模型分配纹理(jpg 文件)? 更准确地说,当我想将纹理分配给原始 java 对象(例如球体)时,我使用以下内容:
Sphere sphere = new Sphere(Radius, Primflags, Appearance);
但是,当加载和添加 obj 文件时,我会这样做:
Scene scene = getSceneFromFile("OBJ file");
myBranchGroup = scene.getSceneGroup();
在第二种情况下,我找不到分配纹理的方法。我该怎么做?
最佳答案
您必须使用制作 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
model.setAppearance(ap);
关于java - 如何将纹理分配给 java3d 中加载的 OBJ 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7388530/