如果我用相机拍照,所以我知道从相机到物体的距离,比如房子的比例模型,我想把它变成一个我可以操纵的3D模型,所以我可以发表评论房子的不同部分.
如果我坐下来考虑拍摄不止一张图片,标记方向和距离,我应该能够弄清楚如何做到这一点,但是,我想我会问是否有人有一些可能有助于解释更多的论文.
你解释的语言并不重要,因为我正在寻找最好的方法.
现在我正在考虑展示房子,然后用户可以为高度提供一些帮助,例如从相机到模型那部分顶部的距离,并且给予足够的这个就可以开始计算高度其余的,特别是如果有一个自上而下的图像,然后是四边角度的图片,以计算相对高度.
然后部件需要颜色不同,以帮助分离我期望的模型的各个部分.
language-agnostic 3d image-processing 3d-reconstruction 3d-model
更新 原始问题不再是这个问题的适当问题,所以我将单独留下来展示我尝试/学习的内容和背景.很明显,这不仅仅是一个"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)
我在想某处有一个额外的加密步骤.也许有翻译表,旋转密码或某种流密码?奇怪的是,字节数是正确的,但结果不应该限制可能性.有任何想法吗?以下是两个示例文件,文件扩展名更改为*.mesh.我不想公开这种文件格式,只想为Blender编写一个导入器,这样我就可以使用这些模型了.
这是两个示例文件.我从Vertices和Facets字段中提取了原始二进制文件(不是b64解码),并从公司提供的此类文件的"Viewer"中提供了边界框信息.
示例文件1
示例文件2
关于"顶点"字段的注释
关于Facets字段的注释
标头base64_encoded_bytes,它是发生base64编码时的字节数
base64_encoded_bytes/facet_count的比例似乎变化很大.从1.1到大约1.2.如果它们被编码为对应于顶点索引的3x4byte整数,我们期望比率为12.因此要么对此字段进行补充,要么使用三角形条保存模型,或者两者都保存 : - /
更多窥探
我打开了viewer.exe(在十六进制编辑器中),由公司提供查看这些文件(也是我获得边界框信息的地方).以下是我发现有趣的一些片段,可以进一步搜索.
f_LicenseClient ......我@ …
我试着查看http://graphics.pixar.com/usd/docs/index.html和http://graphics.pixar.com/usd/docs/Usdz-File-Format-Specification.html上的主要文档.但无法找到创建usdz文件的详细信息.
我可以从http://graphics.pixar.com/usd/downloads.html获取一些示例USD文件
我们怎样才能创造一个?
我有一个 3D 模型 (.obj) 纹理,可以在其他软件中正确加载:

这是我正在使用的代码:
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
我一直在寻找这个,但找不到合适的方法.如何在用户选择模型时在运行时在WPF应用程序中导入3D模型.它可以在任何一个流行的3D建模软件,3DS max,Maya,Blender等中构建,而不是全部.需要导入任何一种格式.3DS,.MAX,.FBX,.obj等.
如果有可用的免费库,请提及它们,如果我必须自己编写代码,请指导如何以及从何处开始.
我从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) 我想找到将搅拌机场景中的灯光添加到 THREE.js 项目中的最佳方法。我在任何地方都找不到如何将灯光从搅拌机导入到 THREE.js 的解释。您的 THREE.js 项目中应该已经有了照明。在处理大型场景时,这不是很有效。
这是我的导入声明
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) 我想在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) 我正在尝试使用arcore增强型脸部将耳朵放在脸上。我正在搅拌机中编辑3D 模型,并根据canonical_face_mesh.fbx调整模型 。
但是我的3D模型在头顶上方渲染。
我还尝试使模型的枢轴点与canonical_face_mesh.fbx相同 (如该SO问题中所述),但仍在应用程序中运行时仍在渲染
有没有办法在 Angular 7 中制作 3D 模型查看器。到目前为止,我一直在 JS 中使用 模型查看器、Web 组件,并且效果很好。如何在 Angular 7 应用程序中实现相同的功能和查看器。