问题截图我正在用Sceneform构建一个非常简单的应用程序,目前只有一个带有sceneview的活动,我在其中添加了一个可渲染的。我想加载我在blender上创建的行星的简单模型,并将其导出为obj文件作为可渲染文件。但是,对象会加载和显示,但根本没有纹理或凹凸贴图,它只是灰色的。我需要知道我的代码有什么问题导致纹理无法加载。调试应用程序或logcat中的错误时,我没有收到任何错误消息。
当我使用一个obj文件来处理我在互联网上下载的一块岩石时,效果很好,对象会显示其纹理。然而,当我开始使用完全相同的过程来导入和显示我在blender上创建的模型时
我还通过使用可完成的未来纹理和. setFacture()方法,直接在Main Activity.java文件中向可渲染添加了纹理。(最后值得注意的是,我已经尝试导出为fbx,而有同样的问题)
MAYActivity.java:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CompletableFuture<Texture> merSurFuture = Texture.builder().setSource(this, R.drawable.mercury_global_map).build();
ModelRenderable.builder().setSource(this, Uri.parse("mercuryobj.sfb") )
.build()
.thenAcceptBoth(merSurFuture, (renderable, texture ) -> {
mObjRenderable = renderable;
mObjRenderable.getMaterial().setTexture("baseColor", texture);
SceneView sceneView = findViewById(R.id.scene_view);
sceneView.setBackgroundColor(Color.BLACK);
Scene scene = sceneView.getScene();
//adding a node to the sceneview
Node node = new Node();
node.setParent(scene);
node.setName("sun");
node.setRenderable(renderable);
node.setLocalPosition(new Vector3(0f,-0.5f,-1f));
})
.exceptionally(throwable -> {
Toast toast = Toast.makeText(this, "unable to load sun", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
return null;
});
mtl文件:
`# Blender MTL File: 'Mercury.blend'
# Material Count: 1
newmtl Material.001
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.800000 0.800000
Ks 0.000000 0.000000 0.000000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 1
map_Bump -bm 0.000030 mercury_topo.png
map_Ks Mercury_global_map.png
map_Kd Mercury_global_map.png
map_Ka Mercury_global_map.png
`
obj文件相关行:
mtllib mercurymtl.mtl
o Mercury_Sphere
...
usemtl Material.001
s 1
sfb文件:
{
materials: [
{
name: 'Material.001',
parameters: [
{
baseColor: 'Mercury_global_map',
},
{
baseColorTint: [
0.80000000000000004,
0.80000000000000004,
0.80000000000000004,
1,
],
},
{
metallic: 0,
},
{
roughness: 1,
},
{
opacity: null,
},
],
source: 'build/sceneform_sdk/default_materials/obj_material.sfm',
},
],
model: {
attributes: [
'Position',
'Orientation',
],
collision: {},
file: 'sampledata/mercuryobj.obj',
name: 'mercuryobj',
recenter: 'root',
scale: 0.20496,
},
samplers: [
{
file: 'sampledata\\Mercury_global_map.png',
name: 'Mercury_global_map',
params: {
usage_type: 'Data',
},
pipeline_name: 'Mercury_global_map.png',
},
],
version: '0.54:2',
}
我希望模型加载并显示它的纹理,就像我在网上下载的模型一样。模型实际上加载完全平滑,没有纹理。
请删除“\”this“/”并按ctrl键s,然后重试。。。
像这样改变:
samplers: [
{
file: 'sampledata/Tex_Beagle.png',
name: 'Tex_Beagle',
pipeline_name: 'Tex_Beagle.png',
injections: [
{usage: "Normal",},
],
},
],
有点太晚了,但文档说明纹理可能不会自动导入到资源中,在这种情况下,它们应该在sfa文件中定义。
在新转换的sfa文件中,您可以在samplers
数组中添加纹理(图像文件),然后在注入
块中声明其用法为正常
(向网格添加详细信息)
samplers: [
{
file: 'sampledata\\Tex_Beagle.png',
name: 'Tex_Beagle',
pipeline_name: 'Tex_Beagle.png',
injections: [
{usage: "Normal",},
],
},
],
这样做:
samplers: [
{
file: 'sampledata/Tex_Beagle.png',
name: 'Tex_Beagle',
pipeline_name: 'Tex_Beagle.png',
injections: [
{usage: "BaseColor",},
],
},
],
并在材质参数中应用“Tex_Beagle”作为基色:)
我得到这个错误而导入场景形式资产。我添加了 在项目级渐变文件中,此
在 Cocos Creator 3D 中,游戏场景(Scene) 是开发时组织游戏内容的中心,也是呈现给玩家所有游戏内容的载体。而场景文件本身也作为游戏资源存在,其保存了游戏的大部分信息,也是创作的基础。 创建场景 我们现在共有三种创建场景的方式: 为了您的项目具备良好的文件夹目录结构,我们强烈建议您使用 方法一 创建场景 方法一:在 资源管理器 中选中你想要创建场景文件的文件夹,在文件夹目录上
我是新来的阿科雷和斯内福。我在arSceneView中有一个arObject,我想在场景中隐藏它(几秒钟)。我不想从场景中分离()锚点,只需将其隐藏,然后在几秒钟后再次显示。 我已尝试更改的参数。sfa文件,但它不起作用 或者我还缺少什么别的方法
导入Sceneform资产时出现此错误:Gradle生成因新的导入规则而失败。是否要还原更改?选项是Revert和Keepbroken gradle changes。 还会弹出一个错误消息: 错误:java。RuntimeException:java。lang.NoSuchMethodError:com。Android工具。主意模板。配方接受者执行者。追加(Ljava/io/File;Ljava/
我试图用opengl在Qt中显示纹理,但当我运行时它就是不显示纹理。 我做了一些研究,发现我需要将纹理的高度和宽度设为2的幂。我的纹理现在是(1024x1024)。 我还添加了很多glTexParameterf,可以解决我的问题,但仍然没有运气。 EDIT1:是不是我的质地太大了? EDIT2:glBindTexture(GL_TEXTURE_2D,m_textureID);放置在glBindTe
有问题显示纹理在我的3D框在LWJGL使用光滑。早些时候我犯了一个错误: BasicShader类: BasicVertex.vs basicfragment.fs