1、sketchup做模型时为啥要加好多个scene呢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1、sketchup做模型时为啥要加好多个scene呢相关的知识,希望对你有一定的参考价值。

2、为什么别人做的模型用卷尺量的时候尺寸不对呢,导进去时尺寸是对的
3、在别人做好的模型上画一个闭合的面,显示不出来,自己单独在这个空间就可以画的出来什么原因

1 SCENE是场景,就是保存一个画面,记录其中的角度,透视参数,阴影,风格等数据,这样更加便于展示你的模型,切换页面变可以回到你保存过的画面。
2 导入模型的尺寸不对,有可能是下的国外的模型,人家用的是英制单位,我们用的是公制单位,所以尺寸不对。
3 画一个闭合的面,可能是因为重面显示的问题看不到,一般转转角度就可以看见了,不管看不看得到,那个面还是存在的。还有可能是你画面的时候起始点捕捉到了模型里面的点,造成画的面实际上在模型面的下面一点点的位置,所以看不到。追问

2、模型应该不是国外的,是我们自己的

追答

那就是单位的问题,或者你不小心缩放

参考技术A su怎么新建场景?(scene)

在 OpenGL 中使用 Blender/SketchUp 模型

【中文标题】在 OpenGL 中使用 Blender/SketchUp 模型【英文标题】:Using Blender/SketchUp Models in OpenGL 【发布时间】:2010-12-21 22:18:18 【问题描述】:

我正在使用 OpenGL 制作渲染器。我在 Blender / Sketchup 中有纹理模型(我可以轻松地在两者之间进行交换),我希望能够将这些文件导出到我的渲染器中。我最初的想法是简单地导出原始面并渲染这些三角形,但我也想轻松地将我的纹理文件分割成纹理坐标。

我的意思是我的模特脸被雕刻成三角形。您可以在this image(转载如下)中看到我的曲线变成了 24 个三角形。我想知道每个三角形使用什么纹理坐标。

DAE 文件是最简单的方法吗?我一直在阅读格式的规范,它看起来很容易。我想我可以解析 XML 并忠实地在 OpenGL 中重新创建模型。我想知道是否有更简单的方法(即不重新发明***的方法)。

【问题讨论】:

您能否详细说明“我也想轻松地将我的纹理文件分割成纹理坐标”是什么意思 没问题!编辑了我原来的帖子。 图片规则问题,所以我冒昧地添加了你的问题。 【参考方案1】:

如果您对解析 .dae 格式感到满意,请务必使用它。但是,如果您只对导出带纹理的三角形网格感兴趣,我会考虑使用.obj format,它更易于解析。据我所知,Sketchup 和 Blender 都可以导出这种格式。

【讨论】:

这看起来像是一种更简单的表示相同数据的方法。今晚我会研究一下 OBJ 格式。 我想让您知道 OBJ(和相应的 MTL 文件)运行良好。非常感谢!【参考方案2】:

如果二进制格式不吓到你,我建议编写一个 Blender & Sketchup 插件并将预先烘焙的几何图形导出到打包的顶点数组中。

这种方法的美妙之处在于您的应用程序中没有解析或类型转换。一切都准备好以简单的连续内存副本发送到 GPU。非常适合静态几何体。

精简的搅拌机导出器看起来像这样:


#!BPY
import bpy, struct
from Blender import *

self.fh = open("MyFileName", "w")
m = bpy.data.meshes["MyMeshName"]
faces = m.faces
for face in faces:
    for (vertex, uv) in zip(face.verts, face.uv):
        self.fh.write(struct.pack('<fff', *vertex.co)) # coords
        self.fh.write(struct.pack('<fff', *vertex.no)) # normals
        self.fh.write(struct.pack('<ff',  uv.x, uv.y)) # uvs

self.fh.close()

【讨论】:

【参考方案3】:

如果您想解析.dae 文件,我建议您查看Collada 解析器。 .dae 实际上是 Collada 文件的扩展,是 Khronos group(OpenGL 的维护者)为 3D 数据交换提供单一统一文件格式的最新成果。

至于现有的解析器,这是我遇到的:

collada-dom,参考实现。顾名思义,它只是 XML 树的抽象。 FCollada,一个更好的抽象。然而,这个项目已经死了快两年了,而且,据我所知,我们不太可能在未来看到任何更新。 OpenCollada,最近的一项新工作。没试过,但背后有一个活跃的社区。​​li>

话虽如此,如果您的唯一目标是加载具有顶点、法线和纹理坐标的简单几何图形,则使用.obj 文件格式可能是一种更快的方法。

【讨论】:

我想让你知道 OBJ 文件工作得很好。非常感谢!【参考方案4】:

建模程序(例如 Blender 或 Sketchup)使用的任何体面的文件格式都将包含重新创建您看到的几何图形所需的所有信息。这应该包括几何类型(例如三角形带、单个三角形等)、几何的顶点和法线、使用的材料属性,以及使用的纹理以及适当的纹理坐标。如果潜在的文件格式缺少任何内容,请选择另一种。

如果您认为解析 XML 很简单,那么我希望您计划使用现有的库来执行此操作,例如 expat、Xerces 或其他一些特定于语言的实现。

在考虑导入/导出时,首先尝试找到一个可以为您处理导入的开源库,并使数据以合理的格式提供给您的程序。如果这不可用,并且您必须编写自己的导入程序,那么请尝试找到适合您需要的简单 ASCII(不是基于 XML 的)或二进制格式。 PLY 可能是合适的。只有在万不得已的情况下,我才建议尝试为基于 XML 的格式实现导入器。

【讨论】:

我以前做过网络应用;我知道不做我自己的 XML 解析。它将通过图书馆。【参考方案5】:

还有: Lib3DS - http://www.lib3ds.org/ LibOBJ(不让我发布链接)

【讨论】:

这很有趣!我去看看。 @mkenyon Github 上可能还有很多开源库。【参考方案6】:

你应该看看:

http://sketchup.google.com/community/developers.html

sketchup 团队免费提供 C++ COM 服务器。使用它,您可以访问有关 .skp 文件的大量信息。

您应该能够使用此 COM 服务器为您的应用程序编写一个 .skp 导入器。

如果可以,您应该尝试获取 .tlb 文件。这将使您能够访问智能指针,这将简化您的导入器(COM 客户端)

我使用了版本 6 SDK(其中包括 tlb 文件)。当前版本的 SDK 似乎不包含此文件。

有人在开发者论坛上发布了解决方案(针对丢失的 tlb 文件): http://groups.google.com/group/su-sdk-fileshare/topics

【讨论】:

以上是关于1、sketchup做模型时为啥要加好多个scene呢的主要内容,如果未能解决你的问题,请参考以下文章

哪位大虾知道怎么把SketchUp建立的模型用ArcGIS打开?

Sketchup导出3D模型时没有 Collada格式 是怎么回事

谁能帮我解决sketchup三维模型导入到arcgis的问题

unity 为啥要做动态骨骼的碰撞,有啥用吗?请问

如何将sketchup模型导入3ds max

revit导入sketchup如何让材质相同