广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP加载3D模型【WebGL】
  • 459
分享到

PHP加载3D模型【WebGL】

php3dwebgl 2023-09-28 14:09:49 459人浏览 安东尼
摘要

这是另一篇关于如何使用 PHP加载 3D 模型的文章。 在这里,我使用 Laravel 作为后端及其存储。 我在前端使用 Three.js 库来渲染和显示 3D 模型。 我将向您展示如何上传 3D 模

这是另一篇关于如何使用 PHP加载 3D 模型的文章。 在这里,我使用 Laravel 作为后端及其存储。 我在前端使用 Three.js 库来渲染和显示 3D 模型。 我将向您展示如何上传 3D 模型以及如何从 Laravel 存储加载 3D 模型。 请仔细完成以下步骤。 大家可以在评论区提出任何问题。 在这里,我展示了一条主要路径,然后你可以根据自己的喜好对其进行自定义。

在这里插入图片描述

推荐:使用 NSDT场景设计器 快速搭建 3D场景。

1、创建 Laravel 项目

创建一个新的 Laravel 项目并创建新的模型、视图和控制器。 然后使用下面的命令链接存储。

php artisan storage:link

2、上传 3D 模型

你可以使用 htmljavascript 创建一个简单的表单。 我使用 Laravel blade文件来构建前端。

ORM action="{{ route('model.store') }}" method="POST" id="file-upload" enctype="multipart/form-data">          @csrf          

使用 ajax 调用提交表单:

$(document).ready(function() {        $('#file-upload').submit(function(e) {            e.preventDefault();            let formData = new FormData(this);            $.ajax({                type:'POST',                url: "{{ route('model.store') }}",                data: formData,                contentType: false,                processData: false,                success: (response) => {                    console.log(response);                    if (response.success) {                        window.location.href = response.url;                    }                },                error: function(response){                    alert('Prescription has not been created successfully');                }          });        });    });

在后端,可以按如下方式实现 store() 方法:

      public function store(Request $request)    {        $validator = Validator::make($request->all(), [            'name' => 'required',            'files' => 'required',            'file_type' => 'required',            'main' => 'required',            'preview' => 'required',        ]);                if ($validator->fails())        {            return response()->json(['errors'=>$validator->errors()->all()]);        }        $date = date('Y-m-d');        $folder = $date.time();        $files = $request->file('files');        foreach ($files as $file) {            $file_name = $file->getClientOriginalName();            $fileName = pathinfo($file_name, PATHINFO_FILENAME);                     try {                $path = Storage::disk('public')->PutFileAs($folder , $file, $file->getClientOriginalName());            } catch (\Exception $e) {                return false;            }        }        if ($request->hasFile('preview')) {            $file = $request->file('preview');            $file_name = $file->getClientOriginalName();            $imageName = time().'.'.$file->extension();              $preview_path = Storage::disk('public')->PutFileAs($folder, $file, $file->getClientOriginalName());                }        if ($request->hasFile('main')) {            $file = $request->file('main');            $file_name = $file->getClientOriginalName();            $imageName = time().'.'.$file->extension();              $path = Storage::disk('public')->PutFileAs($folder,$file,$file->getClientOriginalName());                }        return response()->json(['success'=> true, 'msg'=>'Record is successfully added', 'url'=> '/home']);        }

然后就可以在存储中看到上传的文件了。 它们被组织为单独的文件夹。 要显示 3D 模型,你需要路径 URL。
在这里插入图片描述

3、加载 3D 模型

在下面的示例中,我向你展示如何从 laravel 存储加载 fbx 模型。 同样,你可以轻松加载其他文件类型。 请理解并尝试首先针对一种文件类型实施它。

 if(myData['file_type'] == 'fbx'){          init1();        }else if(myData['file_type'] == 'obj'){          init2();        }                  function init1() {            scene = new THREE.Scene();            scene.background = new THREE.Color(0xDDDddd);            camera = new THREE.PerspectiveCamera(5, window.innerWidth/window.innerHeight, 1, 5000);            camera.position.z = 1000;            light = new THREE.HemisphereLight(0xffffff, 0x444444, 1.0);            light.position.set(0, 1, 0);            scene.add(light);            light = new THREE.DirectionalLight(0xffffff, 1.0);            light.position.set(0, 1, 0);            scene.add(light);            renderer = new THREE.webGLRenderer({antialias:true});            renderer.setSize(window.innerWidth, window.innerHeight);            container = document.getElementById( 'canvas' );            renderer.setSize(container.offsetWidth, 400);                        container.appendChild( renderer.domElement );            controls = new THREE.OrbitControls(camera,  renderer.domElement);            controls.addEventListener('change', renderer);            const fbxLoader = new THREE.FBXLoader();                let text1 = "storage/";                let result = text1.concat(myData['url']);                console.log(result);                fbxLoader.load('{{ asset('storage/') }}'+'/'+myData['url']+'.fbx', (object) => {                scene.add(object);                animate();            });        }        function animate(){            renderer.render(scene,camera);            requestAnimationFrame(animate);        }

这里的方法根据3D模型文件类型而改变。


原文链接:PHP加载3D模型 — BimAnt

来源地址:https://blog.csdn.net/shebao3333/article/details/129022222

--结束END--

本文标题: PHP加载3D模型【WebGL】

本文链接: https://www.lsjlt.com/news/420179.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP加载3D模型【WebGL】
    这是另一篇关于如何使用 PHP加载 3D 模型的文章。 在这里,我使用 Laravel 作为后端及其存储。 我在前端使用 Three.Js 库来渲染和显示 3D 模型。 我将向您展示如何上传 3D 模...
    99+
    2023-09-28
    php 3d webgl
  • cocos2d-x在Lua中添加3d模型
    --3d模型和3D动画的创建require"Cocos2d"local Sprite3DScene=class("Sprite3DScene",function()   return cc.Scene:create()end)--添加cre...
    99+
    2023-01-31
    模型 cocos2d Lua
  • three.js如何加载obj模型
    这篇文章主要介绍three.js如何加载obj模型,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!three.js是一款webGL框架,由于其易用性被广泛应用。如果你要学习webGL,...
    99+
    2022-10-19
  • Three.js GLTF模型加载怎么实现
    这篇文章主要介绍“Three.js GLTF模型加载怎么实现”,在日常操作中,相信很多人在Three.js GLTF模型加载怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Three...
    99+
    2023-07-06
  • torch.hub.load 加载本地模型(已解决)
    背景 运行网上的项目,有时会卡住或者超时,原因是 torch.hub.load 默认会去网上找模型,有时会因为网络问题而报错 解决方法 不让 torch.hub.load 联网下载模型,改为 torc...
    99+
    2023-09-06
    python 深度学习 开发语言
  • PyTorch模型保存与加载的方法
    这篇文章主要介绍了PyTorch模型保存与加载的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PyTorch模型保存与加载的方法文章都会有所收获,下面我们一起来看看吧。state_dict 是一个Pytho...
    99+
    2023-06-30
  • PyTorch加载模型model.load_state_dict()问题及解决
    目录PyTorch加载模型model.load_state_dict()问题1. 对load的模型创建新的字典2. 直接用空白''代替'module.'...
    99+
    2023-02-03
    PyTorch加载模型 model.load_state_dict() PyTorch模型
  • Pytorch模型参数的保存和加载
    目录一、前言二、参数保存三、参数的加载四、保存和加载整个模型五、总结一、前言 在模型训练完成后,我们需要保存模型参数值用于后续的测试过程。由于保存整个模型将耗费大量的存储,故推荐的做...
    99+
    2023-03-11
    Pytorch模型参数保存 Pytorch模型参数加载
  • Three.jsGLTF模型加载实现示例详解
    目录引言1. 下载GLTF模型2. 加载GLTF模型3. 添加光源4. 动画控制总结引言 在Three.js中,要加载三维模型文件,可以使用GLTF格式。GLTF是一种基于JSON...
    99+
    2023-05-16
    Three.js GLTF模型加载 Three.js GLTF
  • Java类加载器以及类加载器的委托模型是什么
    本篇内容介绍了“Java类加载器以及类加载器的委托模型是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我们知道,我们在Java中用到的所...
    99+
    2023-06-17
  • Three.js加载外部模型的示例分析
    这篇文章主要介绍了Three.js加载外部模型的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.  首先我们要在官网: ...
    99+
    2022-10-19
  • PyTorch模型保存与加载实例详解
    目录一个简单的例子保存/加载 state_dict(推荐)保存/加载整个模型保存加载用于推理的常规Checkpoint/或继续训练保存多个模型到一个文件使用其他模型来预热当前模型跨设...
    99+
    2022-11-10
  • pytorch模型的保存和加载、checkpoint操作
    其实之前笔者写代码的时候用到模型的保存和加载,需要用的时候就去度娘搜一下大致代码,现在有时间就来整理下整个pytorch模型的保存和加载,开始学习把~ pytorch的模型和参数是分...
    99+
    2022-11-12
  • Python如何加载模型并查看网络
    目录加载模型并查看网络打开终端神经网络_模型的保存,模型的加载模型的保存(torch.save)模型的加载(torch.load)加载模型并查看网络 加载模型,以vgg19为例。 打...
    99+
    2022-11-11
  • Pytorch模型参数如何保存和加载
    这篇文章主要介绍“Pytorch模型参数如何保存和加载”,在日常操作中,相信很多人在Pytorch模型参数如何保存和加载问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Pytorch模型参数如何保存和加载”的疑...
    99+
    2023-07-05
  • 模型的保存加载、模型微调、GPU使用及Pytorch常见报错
    序列化与反序列化 序列化就是说内存中的某一个对象保存到硬盘当中,以二进制序列的形式存储下来,这就是一个序列化的过程。 而反序列化,就是将硬盘中存储的二进制的数,反序列化到内存当中,得到一个相应的对象,这样就可以再次使用这个模型了。 序列化和...
    99+
    2023-08-30
    pytorch 人工智能 python
  • PyTorch模型的保存与加载方法实例
    目录模型的保存与加载保存和加载模型参数保存和加载模型参数与结构总结模型的保存与加载 首先,需要导入两个包 import torch import torchvision.models...
    99+
    2022-11-11
  • pytorch加载预训练模型与自己模型不匹配的解决方案
    pytorch中如果自己搭建网络并且加载别人的与训练模型的话,如果模型和参数不严格匹配,就可能会出问题,接下来记录一下我的解决方法。 两个有序字典找不同 模型的参数和pth文件的参数...
    99+
    2022-11-12
  • apache加载php模块错误怎么办
    Apache是一款广泛使用的Web服务器软件,它被用于处理网站的HTTP请求和响应。Apache与PHP的组合是非常常见的,因为PHP是一种简单易用的脚本语言,广泛用于Web开发。然而,有时候在加载PHP模块时,会遇到一些错误,这篇文章将探...
    99+
    2023-05-14
  • pytorch模型的保存加载与续训练详解
    目录前面模型保存与加载方式1方式2方式3总结前面 最近,看到不少小伙伴问pytorch如何保存和加载模型,其实这部分pytorch官网介绍的也是很清楚的,感兴趣的点击了解详情 但是肯...
    99+
    2022-11-13
    pytorch模型保存加载训练 pytorch 模型训练
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作