- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题是:
我在 Cinema 4d 中制作了一个带有纹理的 3D 模型(类似于这个:http://preview.turbosquid.com/Preview/2011/03/30__13_54_17/space%20shuttle%206.jpgeec17db2-6651-453c-9d27-ea1908e3c7dfLarge.jpg)
现在我想将其导出到我的 jMonkeyEngine,以便在我的场景中对其进行设置并为其设置动画。
我尝试将模型导出为 .obj 文件并将其加载到我的项目中(只是 .obj 文件)。
结果是我没有纹理!我做错了什么?
package mygame;
import com.jme3.app.SimpleApplication;
import com.jme3.light.DirectionalLight;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.renderer.RenderManager;
import com.jme3.scene.Geometry;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
import com.jme3.scene.shape.Box;
/**
* test
* @author normenhansen
*/
public class Main extends SimpleApplication {
public static void main(String[] args) {
Main app = new Main();
app.start();
}
@Override
public void simpleInitApp() {
//Modell laden
Spatial spaceShuttle =assetManager.loadModel("Models/test/space.obj");
//Skalieren
spaceShuttle.scale(0.005f, 0.005f, 0.005f);
//Szenenbaum erstellen
Node sceneNode = new Node("sceneNode");
Node geometryNode = new Node("geometryNode");
Node lightNode = new Node("lightNode");
sceneNode.attachChild(lightNode);
sceneNode.attachChild(geometryNode);
rootNode.attachChild(sceneNode);
//neue Elemente in den Baum Einfügen
geometryNode.attachChild(spaceShuttle);
DirectionalLight sun = new DirectionalLight();
sun.setDirection(new Vector3f(1,0,-2).normalizeLocal());
sun.setColor(ColorRGBA.White);
rootNode.addLight(sun);
}
@Override
public void simpleUpdate(float tpf) {
//TODO: add update code
}
@Override
public void simpleRender(RenderManager rm) {
//TODO: add render code
}
}
最佳答案
你没有做错任何事。 C4D 仅导出 .obj,但不导出 .mtl默认情况下。我知道 C4D R11.5 和 R12 是这样,但不确定更新的版本是否如此。
您还可以编写一个脚本来导出 .mtl。以下是供引用的 Python 代码片段:
#save mtl
mcount = 0;
mtl = ''
for tag in op.GetTags():
if(tag.GetType() == 5616): #texture tag
mcount += 1
m = tag.GetMaterial()
mtl += 'newmtl '+clean(m.GetName())+'\n'
if(m[sy.MATERIAL_COLOR_COLOR]): mtl += 'Kd ' + str(m[sy.MATERIAL_COLOR_COLOR].x) + ' ' + str(m[sy.MATERIAL_COLOR_COLOR].y) + ' ' + str(m[sy.MATERIAL_COLOR_COLOR].z) + '\n'
if(m[sy.MATERIAL_SPECULAR_COLOR]): mtl += 'Ks ' + str(m[sy.MATERIAL_SPECULAR_COLOR].x) + ' ' + str(m[sy.MATERIAL_SPECULAR_COLOR].y) + ' ' + str(m[sy.MATERIAL_SPECULAR_COLOR].z) + '\n'
if(m[sy.MATERIAL_SPECULAR_BRIGHTNESS]): mtl += 'Ns ' + str(m[sy.MATERIAL_SPECULAR_BRIGHTNESS]) + '\n'
if(m[sy.MATERIAL_TRANSPARENCY_BRIGHTNESS]): mtl += 'd ' + str(m[sy.MATERIAL_TRANSPARENCY_BRIGHTNESS]) + '\n'
if(m[sy.MATERIAL_COLOR_SHADER]): mtl += 'map_Kd ' + str(m[sy.MATERIAL_COLOR_SHADER][sy.BITMAPSHADER_FILENAME]) + '\n'
if(m[sy.MATERIAL_TRANSPARENCY_SHADER]): mtl += 'map_d ' + str(m[sy.MATERIAL_COLOR_SHADER][sy.BITMAPSHADER_FILENAME]) + '\n'
if(m[sy.MATERIAL_BUMP_SHADER]): mtl += 'map_bump ' + str(m[sy.MATERIAL_BUMP_SHADER][sy.BITMAPSHADER_FILENAME]) + '\n'
mtl += 'illum 0\n\n\n'#TODO: setup the illumination, ambient and optical density
mtl = '# Material Count: '+str(mcount)+'\n'+mtl
file = open(mtlPath,'w')
file.write(mtl)
file.close()
它是 this old script 的一部分,但请注意,这是旧的 R11.5 C4D Python API,语法现在有点不同,因此请使用更新的文档和以上内容作为要查找的属性的一般方向。
“无代码”替代方案是将您的模型放入不同的 3D 包中,该包可以正确导出 .obj(和 .mtl),如 Blender例如。您需要找到一种中间格式来保存 Material 数据(我认为您可以尝试 3DS、Collada、FBX),但要注意单位和坐标系的差异。希望您需要的模型功能能够以从 C4D 导出的文件格式保留,并正确导入回其他 3D 包中。
关于java - JME : Import a Cinema 4d Model with texture to jMonkey Projekt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11881996/
在 JME 中,我尝试使用线程,但是当我运行程序时,该函数永远不会启动。 我有一个服务器套接字正在监听来自 Netbeans 的输入。 监听器 while (isRunning) {
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我目前正在使用 JME-Jbullet 物理引擎,但我的地形有问题。 我有 2 个扁平盒子,一个用于地板,一个用作坡道。问题如下: 使用以下代码: Box slope = new Box("Slope
我刚刚开始使用 jME,并在 Blender 中创建了一个 3D 模型,并将其导出到 .obj 并将其导入到我的 jME 应用程序中。环境光工作正常,但我使用的直射光只能照亮几个面,但它不是只照亮物体
我正在尝试在 j2me 中创建一个带有拆分文本的数组。我正在尝试使用来自 ostermiller.org 的 StringTokenizer 类。但是我不知道如何将标记分配到数组中。这段代码可能有什么
是否可以移植现有的图形引擎,如 jMonkeyEngine类似 GwtGL或gwt-g3d ?它只是将原生 OpenGL 调用替换为 WebGL 调用还是还有更多? 最佳答案 事情可能不止这些。看看t
我正在使用 j Monkey Engine 3 构建自定义体素引擎。在 Block.java 类中,我创建了一个几何对象数组,我想为其分配四边形网格。此代码返回空指针异常: faces = n
我想为 3d 游戏编写代码,但我不知道我需要 JME 还是 J2ME,请帮助我!谢谢。 最佳答案 这里的答案似乎有些困惑。 JME是 jMonkey Engine 框架的缩写,它是“一个高性能的、基于
是否可以在JME3 Canvas 中添加Swing组件?如果可能,请分享逻辑。我能够以相反的方式实现我能够在 Swing 中集成 JME3 Canvas 。 最佳答案 不,您不能将 Swing 组件添
我正在玩 JME3,目前面临以下问题: 当 LWJGL Canvas 包含在应用程序的多个选项卡中时,没有一个或只运行 1 次。 这是一个例子: SwingCanvas.java: package j
我有一个在三星 i617 手机上运行的 JME 应用程序,当它的堆超过 7.1 MB(而手机有 64 mb)时,应用程序抛出 OutOfMemoryError... 是否可以在JME中使用-Xmx和-
MIDP 和 JME 有什么区别? 两者与 Android 有什么关系?据我了解,Android 不支持 JME - 对吗? 谢谢 最佳答案 MIDP 代表 Mobile Information De
我需要一些帮助才能开始。 我需要知道如何调用REST 服务 和解析xml。 我的 php 脚本只发回一些 xmlcode,没有别的。(没有 wsdl 或 uddi) 诺基亚 5800 的平台是S60
我的问题是: 我在 Cinema 4d 中制作了一个带有纹理的 3D 模型(类似于这个:http://preview.turbosquid.com/Preview/2011/03/30__13_54_
请看下面的代码 首先,请注意我是 Java Mobile 的 100% 新手。 在这里,当用户单击按钮时,我会点亮并振动。但是,我真的很想创建一个 SOS 应用程序,它可以在线程中将整个屏幕变成白色,
Closed. This question is opinion-based。它当前不接受答案。 想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。 7年前关闭。
从标题看问题就很清楚了。 是否有适用于 Mac OS X 或 Linux 的 Java Micro Edition SDK?或者是否需要 Windows XP 来开发 JME 应用程序? 最佳答案 没
我是一名优秀的程序员,十分优秀!