threejs加载obj文件

article/2025/10/25 3:51:56
threejs加载并展示obj文件:
研究了一段时间,总结下,废话少说,直接上代码:<!DOCTYPE html>
<html lang="en"><head><title>three.js webgl - loaders - OBJ loader</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"><style>body {font-family: Monospace;background-color: #000;color: #fff;margin: 0px;overflow: hidden;}#info {color: #fff;position: absolute;top: 10px;width: 100%;text-align: center;z-index: 100;display:block;}#info a, .button { color: #f00; font-weight: bold; text-decoration: underline; cursor: pointer }</style></head><body><div id="model"></div><script src="/ceshi03/build/three.js"></script><script src="/ceshi03/build/OBJLoader.js"></script><script src="/ceshi03/OrbitControls.js"></script><script>var container;var camera, scene, renderer;var mouseX = 0, mouseY = 0;var windowHalfX = window.innerWidth / 2;var windowHalfY = window.innerHeight / 2;var object;init();animate();function init() {var Models = document.getElementById('model');
//          container = document.createElement( 'div' );
//          console.log(container)
//          info.appendChild( container );camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 3000 );camera.position.x = 0;camera.position.z = 2800;camera.position.y = 300;// scenescene = new THREE.Scene();var ambientLight = new THREE.AmbientLight( 0xcccccc, 0.3 );scene.add( ambientLight );var pointLight = new THREE.PointLight( 0xffffff, 0.2 );camera.add( pointLight );scene.add( camera );var controls = new THREE.OrbitControls(camera);controls.autoRotate = true;// 设置平面自动旋转// managerfunction loadModel() {object.traverse( function ( child ) {//                if ( child.isMesh ) child.material.map = texture;} );object.position.y = -1050;scene.add( object );}var manager = new THREE.LoadingManager( loadModel );manager.onProgress = function ( item, loaded, total ) {console.log( item, loaded, total );};// texture//          var textureLoader = new THREE.TextureLoader( manager );
//
//          var texture = textureLoader.load( 'textures/UV_Grid_Sm.jpg' );// modelfunction onProgress( xhr ) {if ( xhr.lengthComputable ) {var percentComplete = xhr.loaded / xhr.total * 100;console.log( 'model ' + Math.round( percentComplete, 2 ) + '% downloaded' );}}function onError( xhr ) {}var loader = new THREE.OBJLoader( manager );//          loader.load( 'models/obj/male02/male02.obj', function ( obj ) {loader.load( '/ceshi03/model.obj', function ( obj ) {object = obj;}, onProgress, onError );//renderer = new THREE.WebGLRenderer();renderer.setPixelRatio( window.devicePixelRatio );renderer.setSize( window.innerWidth, window.innerHeight );Models.appendChild( renderer.domElement );document.addEventListener( 'mousemove', onDocumentMouseMove, false );window.addEventListener( 'resize', onWindowResize, false );}function onWindowResize() {windowHalfX = window.innerWidth / 2;windowHalfY = window.innerHeight / 2;camera.aspect = window.innerWidth / window.innerHeight;camera.updateProjectionMatrix();renderer.setSize( window.innerWidth, window.innerHeight );}function onDocumentMouseMove( event ) {mouseX = ( event.clientX - windowHalfX ) / 2;mouseY = ( event.clientY - windowHalfY ) / 2;}function animate() {requestAnimationFrame( animate );render();}function render() {//          camera.position.x += ( mouseX - camera.position.x ) * .05;
//          camera.position.y += ( - mouseY - camera.position.y ) * .05;camera.position.x +=.05;camera.position.y += .05;camera.lookAt( scene.position );renderer.render( scene, camera );}var myDate = new Date()function ChangeFormate(floatvar) {var f_x = parseFloat(floatvar);if (isNaN(f_x)) {//alert('function:changeTwoDecimal->parameter error');return false;}var f_x = Math.round(f_x * 100) / 100;var s_x = f_x.toString();var pos_decimal = s_x.indexOf('.');if (pos_decimal < 0) {pos_decimal = s_x.length;s_x += '.';}while (s_x.length <= pos_decimal + 2) {s_x += '0';}if (floatvar < 0) {return s_x.substring(1, s_x.length);} else {return s_x;}}console.log(ChangeFormate(myDate))</script></body>
</html>

 

根据上面的代码我们可以将自己的obj文件进行展示

详细代码请查看:

https://download.csdn.net/download/heidou_2016/10686774

 

更加详细的threejs教程,请查看

http://techbrood.com/threejs/docs/


http://chatgpt.dhexx.cn/article/6ZvNuxRI.shtml

相关文章

Java3D加载obj文件+mtl文件

Java3d入门学习可以参考这位博主大神——苏若年&#xff0c;关于Java3D学习的文章。下面给出他部分文章的链接&#xff1a; 文1 创建三维几何模型:[ http://www.cnblogs.com/dennisit/archive/2013/05/06/3063042.html ] 文2 加载外部Obj模型:[ http://www.cnblogs.com/dennisi…

[OpenGL]导入obj文件

通常来说我们构建一个模型是比较复杂的工作&#xff0c;那么我们还有什么途径获得模型呢。其中一种方法就是导入obj模型&#xff0c;不要被这个名词给吓到了&#xff0c;其实就是把一个制作好的模型保存到一个文件中&#xff0c;我们称为obj文件。 先上图片&#xff1a; 下面说…

vue 加载3D .obj文件

VUE项目 vue-cli 加载obj obj文件存放位置 public/static vue 引入obj 控件&#xff1a;Vue-3D-Model 安装&#xff1a;npm install vue-3d-model <!-- ThreeDCity.vue文件 --> <template><div class"ThreeJSCity"><model-obj class"…

glb转obj文件及构建简单obj文件

目录 一、转换二、构建1三、构建2 一、转换 提供几个转换的网址&#xff1a; https://anyconv.com/glb-to-obj-converter/ https://products.aspose.app/3d/conversion/glb-to-obj https://miconv.com/convert-glb-to-obj/ 二、构建1 自己构建简单obj&#xff1a; 新建文本文…

obj文件(1):obj文件用txt打开并且了解v,f,vn,vt的含义

obj文件:obj文件用txt打开并且了解v,f,vn,vt的含义 笔记obj文件的格式介绍**下载 Blender 软件** 来源&#xff1a;《Computer Graphics Programming in OpenGL Using C 》by V Scott Gordon John L Clevenger内容&#xff1a;介绍obj文件以txt文本形式打开后的标签v,f,vn,vt&a…

什么是obj文件

此文来源&#xff1a;https://www.cnblogs.com/ShadowHanlder/p/4410213.html 百度百科&#xff1a; 程序编译时生成的中间代码文件。目标文件&#xff0c;一般是程序编译后的二进制文件&#xff0c;再通过链接器(LINK.EXE)和资源文件链接就成可执行文件了。OBJ只给出了程序的…

Unity导出模型为Obj文件

Unity导出模型为Obj文件 资源链接下载导入 代码纪要使用方式参考链接 资源链接 原插件代码中只有MeshFilter的Obj导出代码&#xff1b;由于项目需求&#xff0c;需要将SkinnedMeshRenderer导出为Obj文件&#xff0c;故在原代码的基础上&#xff0c;扩展出了SkinnedMeshRendere…

SolidWorks2021导出带材质的OBJ文件

SolidWorks2021导出带材质的OBJ文件 注意SW中所有零件都要使用英文命名&#xff0c;装配体模式下再次新建宏按钮即可 1. 首先下载并安装工具宏 1.1 下载免费工具宏 到Github下载免费的Free-Solidworks-OBJ-Exporter&#xff0c;并解压到自己想要的保存的位置。 1.2 在Soli…

C++/OpenGL 入门(18):读取obj文件并贴图

来源&#xff1a;《Computer Graphics Programming in OpenGL Using C 》by V Scott Gordon John L Clevenger内容&#xff1a;程序6.3 Simple (Limited) OBJ Loader 简单的obj文件读取器&#xff0c;书P152页&#xff0c;PDF171/403 结果 生成&#xff1a; 读取&#xff1a;…

unity动态加载obj文件

unity2018.4.2f1 vs2017 最近项目需求&#xff0c;需要实现动态读物外部obj模型&#xff0c;并加载到场景中&#xff0c;研究了好几天&#xff0c;终于实现了&#xff0c;在此做个记录。 1、首先随便找个.obj模型&#xff0c;带贴图&#xff0c;我的资源截图如下&#xff1a…

obj文件(3): 如何用matlab 打开obj文件

obj文件:如何用 matlab 打开 obj 文件 第一步&#xff1a;检查obj文本格式第二步&#xff1a;用 Blender 软件重新导出obj文件第三步&#xff1a;用excel 打开这个obj 文件第四步&#xff1a;复制excel中的数据&#xff0c;传给matlab第五步&#xff1a; 用matlab 打开3D模型 第…

三维模型obj文件解析

目录 obj文件简介文件结构顶点数据(Vertex data)&#xff1a;自由形态曲线(Free-form curve)/表面属性(surface attributes):元素(Elements):自由形态曲线(Free-form curve)/表面主体陈述(surface body statements):自由形态表面之间的连接(Connectivity between free-form sur…

linux类动态库,Linux动态库(一)

起因 博主在以Linux下做开发。在软件需求中&#xff0c;需要动态库带来的灵活性。 比如说博主主导的智能主机的开发。它需要支持很多种类的设备控制&#xff0c;如普通的开关灯、RGB灯、窗帘、百叶窗等等。我们将这些设备抽象成Device类&#xff0c;具体的设备就从这个类上派生…

OpenFlow Switch

The picture of OpenFlow Switch openflow 架构分为2层&#xff0c;一个是控制器层&#xff0c;一个是switch 层。中间是由openflow protocal进行连接的&#xff0c;负责传输指令与数据。switch分为3大块&#xff0c;第一是openflow channe&#xff0c;他是负责向控制器传输数据…

【博客450】OpenFlow学习

OpenFlow OpenFlow协议规范定义了OpenFlow交换机、流表、OpenFlow通道以及OpenFlow交换协议。 OpenFlow是第一个开放的南向接口协议&#xff0c;也是目前最流行的南向协议。它提出了控制与转发分离的架构&#xff0c;规定了SDN转发设备的基本组件和功能要求&#xff0c;以及与控…

OpenFlow交换机【ACM SIGCOMM顶会论文笔记】

目录 写在前面的话OpenFlow交换机基本思想与工作原理专用OpenFlow交换机&#xff08;Dedicated OpenFlow switches&#xff09; 启用OpenFlow的交换机&#xff08;OpenFlow-enabled switches&#xff09;其他功能&#xff08;Additional features&#xff09;控制器&#xff08…

关于ns-3中安装openflow的问题,解决openflow not found

官网 官网里面并没有明确的描述&#xff0c;这里结合自己的安装过程讲解一下 首先下载源码&#xff0c;记住这一步最好在ns-3目录下&#xff0c;就是运行waf命名的目录 $ hg clone http://code.nsnam.org/jpelkey3/openflow $ cd openflow进行编译&#xff0c;会提示缺少文件…

OpenFlow基础入门知识

本文进行讨论的是OpenFlow 1.0和OpenFlow 1.3的基本知识 Overview&#xff1a; Openflow 1.0&#xff1a; 安全通道单张流表ipv4 Openflow 1.3&#xff1a; 安全通道多级流表&#xff08;流水线pipeline&#xff09;组表测量表ipv6..... 流&#xff08;flow&#xff09; …

Openflow流表学习

Openflow流表学习 OpenFlow是一种新型的网络协议&#xff0c;它是控制器和交换机之间的标准协议。自2009年底发布1.0版本后&#xff0c;OpenFlow协议又经历了1.1、1.2、1.3及1.4版本的演进过程&#xff0c;目前使用和支持最多的是1.0和1.3版本。 OpenFlow1.3在1.0版的基础上进…

SDN与OPENFLOW 简介

本文对Openflow的发展、规范、应用和SDN的提出及相关应用做出较为客观全面的介绍。笔者希望通过本文对OpenFlow/SDN做一个初步介绍&#xff0c;以期帮助大家能够进一步深入了解和学习OpenFlow/SDN。 序言&#xff1a;从网络虚拟化说起 云计算的发展&#xff0c;是以虚拟化技术…