threejs加载.Fbx .OBJ 3D模型文件

这篇具有很好参考价值的文章主要介绍了threejs加载.Fbx .OBJ 3D模型文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

threejs加载.Fbx .OBJ 3D模型文件

文件下载与启动

在threejs官网下载threejs的文件,可以选择直接下载,也可以跳转到GitHub拉取

threejs加载.Fbx .OBJ 3D模型文件

拉取下来的完整文件就是这个样子

threejs加载.Fbx .OBJ 3D模型文件

拉取成功后我们在本地安装启动服务,这样就能很快速的查看threejs的各种例子了

npm i -g http-server
http-server

可以先看看官网里的例子,你想要的东西官方里面都有

开始开发

后期在开发的时候需要用到build和jsm文件,我们可以单独放进demo里这样比较方便我们使用

threejs加载.Fbx .OBJ 3D模型文件

下面我们直接上代码

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>FBXLoader3D模型展示</title>
    <style>
        body {
            margin: 0;
        }
    </style>
</head>

<body>
    <script type="importmap">
        {
            "imports": {
                "three": "./build/three.module.js"
            }
        }
    </script>
    <script type="module">
        import * as THREE from 'three';
        import Stats from './jsm/libs/stats.module.js';
        import { OrbitControls } from './jsm/controls/OrbitControls.js';
        import { FBXLoader } from './jsm/loaders/FBXLoader.js'

        var container, stats, controls, camera, scene, renderer, light;

        init();
        animate();
        function init() {
            container = document.createElement('div');
            document.body.appendChild(container);
            camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, .2, 1000);
            camera.position.set(0, 1.6, 0);
            scene = new THREE.Scene();
            scene.background = new THREE.Color(0xa0a0a0);
            scene.fog = new THREE.Fog(0xa0a0a0, 200, 1000);
            light = new THREE.HemisphereLight(0xffffff, 0x444444);
            light.position.set(0, 20, 0);
            scene.add(light);
            light = new THREE.DirectionalLight(0xffffff);
            light.position.set(0, 20, 10);
            light.castShadow = true;
            scene.add(light);
            var grid = new THREE.GridHelper(5, 20, 0x000000, 0x000000);
            grid.material.opacity = 0.2;
            grid.material.transparent = true;
            scene.add(grid);
            // model

            var loader = new FBXLoader();
            loader.load('fbx/demo1.fbx', function (object) {
                undefined
                object.traverse(function (child) {
                    undefined
                    if (child.isMesh) {
                        undefined
                        child.castShadow = true;
                        child.receiveShadow = true;
                    }
                });
                object.rotation.y = Math.PI / 2;
                //object.rotation.x = -Math.PI/2 - Math.PI/12;
                object.position.set(0, -0.15, 0.3);
                console.log(object.position);
                object.scale.set(.003, .003, .003);
                scene.add(object);
            });

            renderer = new THREE.WebGLRenderer({ antialias: true });
            renderer.setPixelRatio(window.devicePixelRatio);
            renderer.setSize(window.innerWidth, window.innerHeight);
            renderer.shadowMap.enabled = true;
            container.appendChild(renderer.domElement);
            controls = new OrbitControls(camera, renderer.domElement);
            controls.target.set(0, 0, 0);
            controls.update();
            window.addEventListener('resize', onWindowResize, false);

            // stats
            stats = new Stats();
            container.appendChild(stats.dom);
        }

        function onWindowResize() {
            undefined
            camera.aspect = window.innerWidth / window.innerHeight;
            camera.updateProjectionMatrix();
            renderer.setSize(window.innerWidth, window.innerHeight);
        }

        //

        function animate() {
            undefined
            requestAnimationFrame(animate);
            renderer.render(scene, camera);
            stats.update();
        }
    </script>
</body>
</html>

会不会写不重要,只要你会改就能出来,实在不行,就去看官网里的例子,边学边做,也会让你快速学会的


补充一下我犯的错误与解决方式

像我要加载.fbx模型文件, 那就加载FBXLoader.js文。(.obj模型文件, 那就加载OBJLoader.js文件)

然后是OrbitControls.js 接收的camera参数

我们在引入文件的时候不能直接引入,会出现引入失败

threejs加载.Fbx .OBJ 3D模型文件

最好的引入方法是(看的官网的例子)

threejs加载.Fbx .OBJ 3D模型文件

想看源码的你可以打开FBXLoader.js文件看一下

最后的效果图就是这样的

threejs加载.Fbx .OBJ 3D模型文件

运行是没有问题的,细节部分在不断优化。文章来源地址https://www.toymoban.com/news/detail-404588.html

到了这里,关于threejs加载.Fbx .OBJ 3D模型文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue-3d-model js在线预览obj,dae,ply,json,fbx,stl,gltf格式的3D文件

    在线预览地址vue-3d-model js在线预览obj,dae,ply,json,fbx,stl,gltf格式的3D文件 效果: 例子使用了.obj 3D文件格式,自带了截图和旋转功能,其他的3D格式只需要切换一个vue的模板标签即可。具体标签格式如下: 可支持obj,dae,ply,json,fbx,stl,gltf等格式的3D文件格式显示。只需要单页面html即

    2024年02月12日
    浏览(44)
  • qt加载obj格式的3D模型

    在 Qt 中加载 obj 格式的 3D 模型可以使用 Qt 3D 模块。 首先,你需要在你的工程文件中包含 Qt 3D 模块,方法是在工程文件的顶部添加以下行: 然后,在你的代码中包含 Qt 3D 的头文件: 接下来,你可以使用 Qt3DRender::QObjLoader 类来加载 obj 格式的 3D 模型。首先,创建一个 Qt3DRen

    2024年02月16日
    浏览(51)
  • three.js加载3D模型,在网页上展示3D模型(.glb.gltf.fbx格式)

    Three.js是一款开源的主流3D绘图JS引擎,简单点,可以将它理解为three+js就可以了,three表示3D,js表示JavaScript的意思。 结构  .glb.gltf文件最好放在服务器上 放在本地容易报找不到的错 .fbx格式文件可以在本地用3d看图(win10自带)打开另存为.glb格式 index.html代码 js代码 项目案例

    2024年02月11日
    浏览(37)
  • ThreeJS-3D教学八-OBJLoader模型加载+动画

    先看效果图: 本篇给大家介绍下模型加载的知识,用到了OBJLoader对应的模型,为了增加趣味性,花了些时间,利用new THREE.Points获取到模型上的点,做了一个动画效果,其实就是操作 Y轴上的点,先降低上0,然后再还原,代码如下: 如果有同学从我第一篇文章开始学到现在,

    2024年04月24日
    浏览(27)
  • uniapp通过renderjs加载3D模型,支持FBX、GLB和GLTF模型,模型可自动适应。

    n-text-loading是我的自定义loading组件,可以自行替换 id是threeView是模型显示的位置, props里面的url是模型链接,cameraZ是相机位置,默认100,一般不需要改,有些z轴很长的模型旋转的时候会有一部分相机看不到这个时候就需要调整这个值了,这两个要从后台上传。 :prop=“url”,

    2024年02月14日
    浏览(30)
  • 推荐:vue-3d-loader支持.dae/.fbx/.gltf/.glb/.obj/.ply/.stl/.json,并支持同一个场景导入多个不同3D模型,支持mtl材质以及jpg/png等图片纹理

    vue-3d-loader是vueJS + threeJS整合的一个3d展示组件。 支持.dae/.fbx/.gltf/.glb/.obj/.ply/.stl/.json,并支持同一个场景导入多个不同3D模型,支持mtl材质以及jpg/png等图片纹理 vue3请安装 2.0.0 及以上版本࿰

    2024年02月10日
    浏览(42)
  • 3dmax模型完美转glb模型,gltf格式模型转fbx格式转obj格式

    现在好多模型都是3dmax模型,但是客户要求是glb或者gltf模型 这个时候好多人直接导出glb模型,是没有颜色贴图的,这样的 这个时候是不能用的,怎么办,咱们要回到3dmax,把VR材质一个个重新上普通材质 当然也可以用插件一键转换 没有插件可以联系QQ 424081801也可以制作glb模

    2024年02月12日
    浏览(34)
  • 【瑞模网】Cesium 模型转换(obj max fbx转gltf/3dtiles)

    这三种都是3dmax支持的格式,可以统一将.fbx和.max转化为.obj格式,然后通过obj2gltf转为glb或者gltf,其中gltf是比glb的模型要大一点;或者通过ceisumlab等工具将.obj处理成3dtiles,当然3dtiles是用于大场景居多。 .obj .max .fbx类型的模型转换为gltf/glb,使用obj2gltf 以下举例讲述下.max的处

    2024年02月11日
    浏览(41)
  • [visionOS] [Apple Vision Pro] 3D模型文件格式转换:obj转usdz

    1,先要安装好Python3.7 【必须是Python3.7.x版本】 到Python官方去下载macOS版的Python3.7.x安装包 Python Releases for macOS | Python.org 要注意找一下,有些 3.7.x版本没有macOS安装包, 这里直接给出其中两个可以下载的 Python 3.7.8rc1 - June 17, 2020 Download macOS 64-bit installer Python 3.7.9 - Aug. 17, 2020

    2024年02月16日
    浏览(96)
  • Panda3d如何获取到可用的模型?Maya、3D Max、OBJ等3D格式转换为egg、gltf文件

    ​ 使用Panda3d进行3D环境建模也有一段时间了,真的是被折磨的头秃。。。不过也不得不说,Panda3D也确实是一个比较优秀的3D游戏引擎,还是能满足你的大部分需要的。 ​ 如果你在深入使用Panda3d后,我相信有个问题那绝对是让人头大的,那就是模型问题。对于没有学过3D建模

    2024年02月05日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包