标签: 3d-model

3D重建 - 如何从2D图像创建3D模型?

如果我用相机拍照,所以我知道从相机到物体的距离,比如房子的比例模型,我想把它变成一个我可以操纵的3D模型,所以我可以发表评论房子的不同部分.

如果我坐下来考虑拍摄不止一张图片,标记方向和距离,我应该能够弄清楚如何做到这一点,但是,我想我会问是否有人有一些可能有助于解释更多的论文.

你解释的语言并不重要,因为我正在寻找最好的方法.

现在我正在考虑展示房子,然后用户可以为高度提供一些帮助,例如从相机到模型那部分顶部的距离,并且给予足够的这个就可以开始计算高度其余的,特别是如果有一个自上而下的图像,然后是四边角度的图片,以计算相对高度.

然后部件需要颜色不同,以帮助分离我期望的模型的各个部分.

language-agnostic 3d image-processing 3d-reconstruction 3d-model

37
推荐指数
4
解决办法
4万
查看次数

原始浮点编码

更新 原始问题不再是这个问题的适当问题,所以我将单独留下来展示我尝试/学习的内容和背景.很明显,这不仅仅是一个"Base64变种",而且涉及的更多一些.

背景: 我在python 3.x中编程主要用于开源程序Blender.我是新手/业余级程序员,但我很了解大概念我已经阅读了与我的问题相关的这些文章.

问题: 我有一个二进制文件,其中包含对应于每个顶点(浮点数)的x,y,z坐标的3d网格数据(浮点列表和整数列表)以及构成网格面的顶点索引(整数).该文件以xml'ish的感觉组织......

<SomeFieldLabel and header like info>**thensomedatabetween**</SomeFieldLabel>
Run Code Online (Sandbox Code Playgroud)

以下是"顶点"字段中的示例

<Vertices vertex_count="42816" base64_encoded_bytes="513792" check_value="4133547451">685506bytes of b64 encoded data
</Vertices>
Run Code Online (Sandbox Code Playgroud)
  1. " 顶点 "和" /顶点 " 之间有685506个字节的数据
  2. 这些字节只包含aa,AZ,0-9和+,/,这是base64的标准
  3. 当我抓住那些字节,并在python中使用标准的base64decode时,我得到了513792个字节
  4. 如果可以认为vertex_count ="42816",则表示每个顶点的x,y,z需要42816*12bytes.42816*12 = 513792.优秀.
  5. 现在,如果我尝试将解码后的字节解压缩为32位浮点数,我会得到垃圾......所以有些东西是ammis.

我在想某处有一个额外的加密步骤.也许有翻译表,旋转密码或某种流密码?奇怪的是,字节数是正确的,但结果不应该限制可能性.有任何想法吗?以下是两个示例文件,文件扩展名更改为*.mesh.我不想公开这种文件格式,只想为Blender编写一个导入器,这样我就可以使用这些模型了.

这是两个示例文件.我从Vertices和Facets字段中提取了原始二进制文件(不是b64解码),并从公司提供的此类文件的"Viewer"中提供了边界框信息.
示例文件1

示例文件2

关于"顶点"字段的注释

  • 标头指定vertex_count
  • 标头指定base64_encoded_bytes,它是发生base64编码时的字节数
  • 标题指定"check_value",其重要性尚未确定
  • 该字段中的数据仅包含标准base64字符
  • 在标准base64解码之后,输出数据具有... length = vertex_count*12 = base64_encoded_bytes.偶尔b64输出中还有4个额外的字节? - 编码/解码字节的比率是4/3,这也是典型的base64

关于Facets字段的注释

  • 标头指定了facet_count
  • 标头base64_encoded_bytes,它是发生base64编码时的字节数

  • base64_encoded_bytes/facet_count的比例似乎变化很大.从1.1到大约1.2.如果它们被编码为对应于顶点索引的3x4byte整数,我们期望比率为12.因此要么对此字段进行补充,要么使用三角形条保存模型,或者两者都保存 : - /

更多窥探
我打开了viewer.exe(在十六进制编辑器中),由公司提供查看这些文件(也是我获得边界框信息的地方).以下是我发现有趣的一些片段,可以进一步搜索.

f_LicenseClient ......我@ …

python reverse-engineering 3d-model

23
推荐指数
1
解决办法
2200
查看次数

如何创建USDZ文件?

我试着查看http://graphics.pixar.com/usd/docs/index.htmlhttp://graphics.pixar.com/usd/docs/Usdz-File-Format-Specification.html上的主要文档.但无法找到创建usdz文件的详细信息.

我可以从http://graphics.pixar.com/usd/downloads.html获取一些示例USD文件

我们怎样才能创造一个?

3d 3d-model usdz

18
推荐指数
2
解决办法
2万
查看次数

如何在 Open3D 中加载 3D 模型 (.obj)?

我有一个 3D 模型 (.obj) 纹理,可以在其他软件中正确加载: 在此输入图像描述

但使用 Open3D 时,纹理都会被显示出来: 在此输入图像描述

在此输入图像描述

这是我正在使用的代码:

import open3d as o3d

def visualize(mesh):
    vis = o3d.visualization.Visualizer()
    vis.create_window()
    vis.add_geometry(mesh)
    vis.run()
    vis.destroy_window()

def main():
    mesh = o3d.io.read_triangle_mesh("scene_mesh_decimated_textured.obj")
    visualize(mesh)

main()
Run Code Online (Sandbox Code Playgroud)

这是模型和纹理: https://www.dropbox.com/s/xm0sun3hoijwbjf/Archive.zip ?dl=0

python 3d-model open3d

7
推荐指数
1
解决办法
1万
查看次数

如何在WPF应用程序中动态导入3D模型

我一直在寻找这个,但找不到合适的方法.如何在用户选择模型时在运行时在WPF应用程序中导入3D模型.它可以在任何一个流行的3D建模软件,3DS max,Maya,Blender等中构建,而不是全部.需要导入任何一种格式.3DS,.MAX,.FBX,.obj等.

如果有可用的免费库,请提及它们,如果我必须自己编写代码,请指导如何以及从何处开始.

.net c# wpf import 3d-model

6
推荐指数
1
解决办法
1万
查看次数

ARKit - 如何在SceneKit编辑器中设置操纵器位置与节点的中心

我从Sketchfab下载了两个不同的3D模型.我在ARKit 3D对象放置中导入了两个模型.在放置3D模型时,节点没有正确地与其中一个模型的操纵器对齐..我已附上截图. 在此输入图像描述

左侧是所选节点(视口)和操纵器正确对齐的位置.但右侧所选节点(视口)和操纵器未正确对齐.如何使节点和操纵器像左侧3D模型一样对齐中心.请指导我.谢谢

@Josh罗宾斯

我已经尝试过你的代码,但我仍然遇到同样的问题.

box.firstMaterial?.emission.contents = UIColor.green

                    box.firstMaterial?.shaderModifiers = [SCNShaderModifierEntryPoint.surface: sm]

                    box.firstMaterial?.isDoubleSided = true
                    let boxNode = SCNNode(geometry: box)
                    boxNode.position = SCNVector3(node.position.x,(node.position.y + Float((proheights * 0.0234)/2)),node.position.z)

                    let minimum = float3(treenode.boundingBox.min)
                    let maximum = float3(treenode.boundingBox.max)

                    let translation = (maximum - minimum) * 0.5

                    //3. Set The Pivot
                    treenode.pivot = SCNMatrix4MakeTranslation(translation.x, translation.y, translation.z)
                    boxNode.pivot = SCNMatrix4MakeTranslation(translation.x, translation.y, translation.z)

                    self.addChildNode(boxNode)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

更新的代码

let treenode = SCNNode()
                    let box = SCNBox(width: (prowidths * 0.0234), height: (proheights * 0.0234), length: (prolenght * 0.0234), chamferRadius: 0) …
Run Code Online (Sandbox Code Playgroud)

ios 3d-model scenekit swift arkit

6
推荐指数
1
解决办法
1991
查看次数

THREE.js 从搅拌机导出的 gltf 添加照明的最佳方法是什么

我想找到将搅拌机场景中的灯光添加到 THREE.js 项目中的最佳方法。我在任何地方都找不到如何将灯光从搅拌机导入到 THREE.js 的解释。您的 THREE.js 项目中应该已经有了照明。在处理大型场景时,这不是很有效。

使用 gltf 格式从搅拌机导入的 THREE.js 输出 使用 gltf 格式从搅拌机导入输出

从 Blender 渲染场景 我正在寻找的输出

这是我的导入声明

initGLTFLoader(){

    this.gltfLoader = new THREE.GLTFLoader();



}

loadCTF(){


    // Load a glTF resource
    this.gltfLoader.load(
        // resource URL
        'ctf.gltf',
        // called when the resource is loaded
        function ( gltf ) {

            // this console.log indicates that the light are actually in the import, 
            // but dont get added to the scene
            console.log(gltf);

            this.scene.add( gltf.scene );


        }.bind(this),
        // called while loading is progressing
        function ( xhr ) …
Run Code Online (Sandbox Code Playgroud)

lighting blender three.js 3d-model gltf

6
推荐指数
0
解决办法
4027
查看次数

如何在 Python 中更新 GLB/GLTF 3D 模型纹理

我想在Python中加载GLB模型,用另一个纹理图像替换现有纹理并保存它。

到目前为止我可以加载、修改和导出模型。另外,我找到了一种将本地图像附加到模型的方法。但我不确定如何查找和替换现有纹理。

具有一个纹理文件的 3D 模型示例:https://modelviewer.dev/shared-assets/models/Astronaut.glb

from pygltflib import GLTF2
from pygltflib.utils import ImageFormat, Image

filename = "Astronaut.glb"
gltf = GLTF2().load(filename)

image = Image()
image.uri = "new-texture.png"

gltf.images.append(image) 
gltf.convert_images(ImageFormat.DATAURI)
gltf.images[0].uri
gltf.images[0].name

# How to find and replace the existing texture?
# ...

filename2 = "updated-3D-model.glb"
gltf.save(filename2)
Run Code Online (Sandbox Code Playgroud)

python 3d-model gltf

6
推荐指数
1
解决办法
2862
查看次数

无法在AR增强面部中设置3d模型的正确方向

我正在尝试使用arcore增强型脸部将耳朵放在脸上。我正在搅拌机中编辑3D 模型,并根据canonical_face_mesh.fbx调整模型 。

搅拌机中的模型截图

但是我的3D模型在头顶上方渲染。

我还尝试使模型的枢轴点与canonical_face_mesh.fbx相同 (如该SO问题中所述),但仍在应用程序中运行时仍在渲染头顶的耳朵

android blender augmented-reality 3d-model arcore

5
推荐指数
1
解决办法
320
查看次数

Angular 7 3D 模型查看器

有没有办法在 Angular 7 中制作 3D 模型查看器。到目前为止,我一直在 JS 中使用 模型查看器、Web 组件,并且效果很好。如何在 Angular 7 应用程序中实现相同的功能和查看器。

javascript webgl three.js 3d-model angular

5
推荐指数
1
解决办法
4820
查看次数