我希望能够像在此示例中一样导出一个OBJ文件,但是,我想在.mtl纹理文件中导出带有相应纹理的.OBJ文件(我已经看到了使用" usemtl woryexturenamefrommtl"的OBJ文件) 我已经看过这个问题,但出口商似乎只导出了网.我还找到了>这个问题,但这仅讨论进口商. 我要实现的目的是制作一个3D可打印的编辑器,该编辑器也将导出纹理/颜色,因为已经有一个.STL网格出口商用于3D打印.但是,我没有找到三个JS的网格+颜色/纹理出口商:( 解决方案 我稍微扩展了Objexporter.它将返回包含.OBJ零件和.mtl零件的对象.我只是在没有测试的情况下写下来,所以可能有错误,但是我希望这是一开始. . 我没有查找所有MTL值,除了颜色和纹理信息外,我只使用了一些标准值.也许以后我会改进它.您还需要了解MTL文件名.目前,我正在为OBJ部分写一个静态名称.保存文件时,MTL文件必须与声明的OBJ文件中的名称相同.否则3DS Max等都不会读取它
以下是关于 .obj 的编程技术问答
我有一个简单的C语言项目,其中有一些文件正在编译.这些被编译为.OBJ文件,然后将它们链接在一起.到目前为止,我还需要将其中一个文件排除在链接中. 我知道这是非常不寻常的,但这正是我需要的:编译文件但不将其链接到项目的输出文件.使用Visual Studio 2012. 我不知道链接器在哪里抓住文件要链接,尽管我一直在寻找项目属性和vcxproj文件中的各个地方.它必须是通过编译文件列表的编译器.是否可以自定义此建筑阶段? 在Visual Studio 2010中,很容易将文件排除在链接中:默认情况下,所有编译的文件都存储为$(IntDir)%(FileName).obj.如果一个.obj文件存储在其他地方(在我的情况下只是%(FileName).obj),则没有链接. VS2012似乎链接了实际编译的所有文件,无论其位置如何. 如果我将文件名更改为%(FileName).obj.x,则没有任何更改,链接器仍将其链接. 我知道我可以将文件作为后构建事件编译,
我试图将.OBJ模型加载到我的C ++ OpenGL 3代码中,但由于某种原因,它给了我这个错误: 1>链接... 1>.\ bunny.obj:致命错误lnk1107:无效或损坏的文件:无法在0x6592 读取 我试图搜索类似的错误,但是大约有.dll或.lib的错误. 您能帮我解决这个问题吗?我还尝试了不同的OBJ模型,但它总是给我这个错误. 解决方案 您正在尝试使用C ++链接器加载对象模型(可能您刚刚将其添加到项目中,现在它尝试编译). 链接器可以处理.OBJ文件,但它等待它们为"对象代码"文件(通常具有.OBJ扩展名),它们只是编译的模块(例如,用C ++语言编写),准备链接到单个可执行文件中或dll. C ++编译器的一部分都无法读取图形对象模型.您应该从IDE项目中删除.OBJ文件.并确保您的代码在程序运行时读取文件. 如果您希望将对象模型嵌入您的.exe中(因此程序不需要该文件中的文件),则可以将其放入资源中并将其与可执行文件链接.
我开始新使用GitHub.我很难将.OBJ文件加载到我的存储库中.我发现了一个gitignore文件,可以与Unity Projects一起使用,并且正在使用它. Temp/ Obj/ UnityGenerated/ Library/ *.svd *.userprefs *.csproj *.pidb *.sln *.suo *.user *.unityproj *.booproj 这是哪一个引起这一点?还是还有其他原因? 解决方案 您自己的Gitignore不是这里的罪魁祸首.因此,其他可能导致您的.OBJ文件被忽略. 原因是您上下文中的.obj文件是网格,但它们也是文件格式的文件格式是代码汇编的结果. 我认识的几个git客户端正在尝试通过为您提供全局忽略的git文件来为您提供帮助.因此,可能的罪魁祸首是这样的文件(可能位于主目录中)包含一个条目,导致其忽略.OBJ文件.找到忽略文件并根据需要进行调整. 其他解决方案 问题是您的存储库提供商(例如
我的目标是使用Python从nifty(.nii)格式获得.OBJ文件,以便在Unity上打开它.我知道" Scikit-image"软件包具有一个称为"度量"的模块,该模块已实现了行进的立方体算法.我将行进立方体算法应用于我的数据,并获得了我期望的结果: verts, faces, normals, values = measure.marching_cubes_lewiner(nifty_data, 0) 我可以绘制数据: fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.plot_trisurf(verts[:, 0], verts[:,1], faces, verts[:, 2], linewidth=0.2, antialiased=True) plt.show() 我已经寻找可以将数据(verts,faces formals,value)保存为.
这似乎是一个重复的问题,因为它与/a>或其他许多人,但是我所见过的任何一篇文章都没有真正帮助我弄清楚问题的位置(当然是我;)...),因此我敢于在这里发布它,因为它使我去真的很疯狂. 好吧,我正在研究Angular2的一个项目,该项目是由Angular CLI生成的(没有后端任务或任何贩运,仅此刻HTML + CSS + JS文件...全部最新和最新).我已经通过npm导入了三个. import * as THREE from 'three'; declare var require: any; const OBJLoader = require('three-obj-loader')(THREE); 我可以绘制任何形状,使用灯和阴影,但不能从外部.obj文件加载网格.我尝试了许多看起来像这样的变体: const manager = new THREE.LoadingManager(); const loader = new THREE.OBJLoader( m
我使用objmtlloader加载了一个带有MTL文件纹理的OBJ文件. 我从主要对象(穿着头发,手和鞋子的人穿着衣服的人)显示出正确的纹理(例如眼睛,嘴巴,领带,按钮). 加载的对象是一个三个孩子,有10个孩子,每个孩子都是一个三个孩子,有3、5或7个孩子. . 这是用于加载OBJ和MTL的JS代码... //===================================================== ===== function SOW_F_Load_OBJMTL_Model ( givenFilespec, mtlFilespec, givenName, givenScene, givenHexColorStr, posX, posY, posZ, rotX, rotY, rotZ, scaleX, scaleY, scaleZ ) { THREE.Loader.Handlers.add( /\.dds$/i,
我正在尝试从 three.js git加载和上色,称为" walthead.obj" 位于此处: 我能够将其加载到我的项目中,但是当我尝试使用已经使用GLTF/GLB型号为我使用的代码绘制渐变颜色时,它与此不起作用". "文件. 我做了一个小提琴以使生活更轻松 - 但是由于某种原因,该模型未加载到小提琴文件中: 希望有人可以修复它,以便加载? 无论哪种方式,就像我说的那样,我试图用梯度将其染色 - 但它完全是黑色的. 代码在小提琴中,也在这里: const loader = new OBJLoader(); loader.load( "https://github.com/mrdoob/three.js/blob/dev/examples/models/obj/walt/WaltHead.obj", function ( theScene ) { console.log(" =>'theScene' = ", theScene);
加载.obj: loader.load( 'test.obj', function ( objMesh ) { objMesh.traverse( function ( child ) { if ( child instanceof THREE.Mesh ) { child.material = mat2; } } ); 我试图使用MRDOOBS代码找到位置: objMesh.geometry.computeBoundingBox(); var boundingBox = objMesh.geometry.boundingBox; var position = new THREE.Vector3(); position.subVectors( boundingBox.max, boundi
我正在遵循此tuttorial: 这是我的MTL文件: newmtl Texture0 Ns 20 d 1 illum 2 map_Kd face_eyel_hi.jpg Kd 0.7 0.7 0.7 Ks 0 0 0 Ka 0 0 0 newmtl Texture1 Ns 20 d 1 illum 2 map_Kd face_eyer_hi.jpg Kd 0.7 0.7 0.7 Ks 0 0 0 Ka 0 0 0 newmtl Texture2 Ns 20 d 1 illum 2 map_Kd face_skin_hi.jpg Kd 0.7 0.7 0.7 Ks 0 0 0 Ka 0 0 0 newmtl Texture3 Ns 20 d 1 illum 2 map_Kd face_
首先,我是搅拌机的新手.我已经从树对象附加了纹理.该项目仅导出(.obj)和(.mtl)文件.但是它不导出纹理图像.我还需要纹理图像.请给任何解决方案. 解决方案 关于搅拌器OBJ阅读此内容 - Blender用纹理导入OBJ文件,将Blender Internal Renderer作为活动渲染器可以很好.但是,在周期是活动渲染器时,以纹理导入OBJ文件当前不支持.使用循环,您必须用质地创建一种新材料 因此,第一个想法是在尝试导入网格时检查您使用的渲染器. 然后是文件格式本身. OBJ文件格式由两个文件制成,而不是一个. *.OBJ文件包含网格数据. *.mtl文件包含带有关联纹理路径的一种或多种简单的phong材料.好消息是OBJ是文本形式的超级简单文件格式.您可以在文本编辑器中打开文件并根据需要进行编辑. 当 *.mtl文件是Missig时,搅拌机没有什么可导入的.没有MTL文件意味着没有材料,也没有可用的纹理. 当存在 *.mtl文件时,但是文件中的纹理路径是绝对的,
我需要一些帮助,以使用新的Apple Arkit放置3D型号.是否可以放置一个类型OBJ的对象?我试图放置一个3D型号的头骨. //Load the OBJ file let bundle = Bundle.main guard let url = bundle.url(forResource: "Cranial", withExtension: "obj") else { fatalError("Failed to find model file") } let asset = MDLAsset(url:url) guard let object = asset.object(at: 0) as? MDLMesh else { fatalError("Failed to get mesh from asset") } let scene = SCNScene() let nodeCranial = SCNNode.init(mdlObject: object)
我遵循此我在做什么错? 我没有从提供的来源更改代码.我只是将对象文件导入了场景并添加了必要的物理. 我要做的就是通过onMouseDown突出显示我的.obj文件. aperot.cs: using UnityEngine; using System; public class TransformObject { /////////////////////////////////////////////////////////////////////////// #region Variables // variables #if UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_WEBPLAYER private float RotationSpeed = 1500; private float MoveSpeed = 50.0f; priva
我正在使用小型3D引擎,以了解更多OpenGL.我正在使用Scala和lwjgl进行任务. 加载"手工制作"(所有顶点,纹理坐标和索引 - 手工指定的数组)模型就像魅力一样工作,因此我想继续加载.obj文件.事实证明,这不是 简单,或者,我以某种方式误解了某些东西. 让我们看一下我的解析方法: private def parseObj(path: String): Model = { val objSource: List[String] = Source.fromFile(path).getLines.toList val positions: List[Vector4] = objSource.filter(_.startsWith("v ")).map(_.split(" ")).map(v => new Vector4(v(1).toFloat,v(2).toFloat,v(3).toFloat, 1.0f)) // val norm
我一直在启用OpenGL的模型时遇到问题.我已经使用了自己的OBJ解析器和渲染功能,但我看不到这个问题.这是我的解析器函数: void load_obj(char *nom) { FILE *file = fopen(nom, "r"); int iv = 0, in = 0, it = 0, ifa = 0; if(file != NULL) { while(1) { char lineHeader[128]; int res = fscanf(file, "%s", lineHeader); if(res == EOF) break; if(strcmp(lineHeader, "v") == 0) { float vertex[3] = {0,0,0}; fscanf(file, "%f %f %f\n"
我使用Blender创建了一个.obj文件,并使用SKRX us us的OBJfileLeLododer加载到Pygame中: objfileleloader中的错误 将其导入pygame后,是否有一种简单的方法可以更改导入.OBJ文件的位置,高度和宽度?例如,如果您创建一个tree.obj文件,以便能够将同一树放置在不同大小的不同位置? 遵循以下代码,也许类似: object_obj = OBJ("Tree.obj", swapyz=False) object_obj.setX = 0 object_obj.setWidth = 3 object_obj.setHeight =10 或通过向OBJ加载程序发送额外的参数,更改顶点? OBJ加载器: import pygame from OpenGL.GL import * def MTL(filename): filename = 'OBJ/'+filename contents
我很绝望.很长时间以来一直在尝试简单地在关键新闻事件上旋转对象.我不能只弄清楚,任何人都可以展示如何做吗? 这是我的模型 https://wwww.dropbox.com/s/8yefhx3yc11zbik/b.obj?dl = 0 ,只要按下键盘按钮" B",我就需要在X轴上旋转它,以便从聚光灯或直接光线上的阴影发生变化.有人吗? 我需要用整个字母(我有所有型号)来做到这一点? 是什么最好的方法? 解决方案 您的代码中有不同的问题. 1)使用变量"字母"旋转对象.此变量仅在函数onload中定义.因此,您需要获得一个gloabal的变量,并向其信号. 2)尝试首先旋转孔场景. "课程6.scene.rotation.y += 1;"因此,您可以测试如何使用按钮控件.在您的代码中,每次点击仅旋转一次.我认为你需要使用 " setInterval"和" window.clearinterval" http://www.w3schools.com/js
我在3D编辑器应用程序中存储了一些3D对象(blender/solid/3ds)文件格式,该文件格式将带有PNG/JPG文件中的可选纹理导出到OBJ+MTL文件. 我想将这些对象加载到手机上的OpenGL ES应用程序中(今天适用于Android,在不久的将来也适用于iOS).而且我不想写自己的OBJ+MTL(或任何其他3D格式)解析器.因此,我想使用一些3D引擎来支持加载3D型号(从我的3D编辑器中的OBJ+MTL或导出到3D引擎特定的标头/资源文件)来实现此目的. 我在MIN3D框架方面有一定的经验,但是加载文件(也不会加载材料颜色,只有纹理映像),不支持OpenGL ES 2.0,并且显然不会在iOS上运行,这有点易于故障. 我已经看到了C Header Files的流行搅拌器导出脚本( http://iphonedevelopment.blogspot.com/2009/06/ususe-3d-models-from-blender-blender-in-ope
我正在使用OpenGL ES编写Android应用.我遵循了一些在线教程,并设法使用硬编码顶点/纹理坐标加载了纹理的立方体 作为下一步,我为WaveFront .OBJ文件编写了解析器.我使用教程的顶点等制作了一个模拟文件,该文件可以正加载. 但是,当我使用使用3D建模包制成的文件时,所有纹理都会混乱 以下是我当前获得纹理坐标的方式: 首先,我将所有纹理坐标加载到大量向量 中 接下来,我找到了每个f三角形的前两个纹理坐标(因此,F 1/2/3 2/5/2 3/4/1表示我采用第二和第五纹理坐标.从1而不是0,我必须从位置到-1,然后将位置乘以x坐标位置2,然后对我的vt array中的y坐标位置进行相同的but +1. 我采用刚刚找到的那些纹理坐标,并将它们添加到另一个向量. 一旦我完成了所有顶点.我将矢量变成floatbuffer,将其传递给我的绘制方法 中的glTexCoordPointer 这是解析文件的代码: private void