python+flask实现360全景图和stl等多种格式模型浏览

ops/2025/3/16 1:08:43/

1. 安装依赖

pip install flask

2. 创建Flask应用

创建一个基本的Flask应用,并设置路由来处理不同的文件类型。

from flask import Flask, render_template, send_from_directory

app = Flask(__name__)

# 设置静态文件路径

app.static_folder = 'static'

@app.route('/')

def index():

    return render_template('index.html')

@app.route('/view/360')

def view_360():

    return render_template('360_viewer.html')

@app.route('/view/stl')

def view_stl():

    return render_template('stl_viewer.html')

@app.route('/static/<path:filename>')

def static_files(filename):

    return send_from_directory(app.static_folder, filename)

if __name__ == '__main__':

    app.run(debug=True)

3. 创建HTML模板

在`templates`文件夹中创建HTML模板文件。

index.html

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>模型浏览</title>

</head>

<body>

    <h1>选择浏览模式</h1>

    <ul>

        <li><a href="/view/360">360全景图</a></li>

        <li><a href="/view/stl">STL模型</a></li>

    </ul>

</body>

</html>

 

360_viewer.html

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>360全景图浏览</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/panolens.js/0.11.0/panolens.min.js"></script>

</head>

<body>

    <div id="panorama" style="width: 100%; height: 100vh;"></div>

    <script>

        const panorama = new PANOLENS.ImagePanorama('/static/360_image.jpg');

        const viewer = new PANOLENS.Viewer({ container: document.getElementById('panorama') });

        viewer.add(panorama);

    </script>

</body>

</html>

 

stl_viewer.html

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>STL模型浏览</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/STLLoader/2.0.0/STLLoader.js"></script>

</head>

<body>

    <div id="model" style="width: 100%; height: 100vh;"></div>

    <script>

        const scene = new THREE.Scene();

        const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);

        const renderer = new THREE.WebGLRenderer();

        renderer.setSize(window.innerWidth, window.innerHeight);

 document.getElementById('model').appendChild(renderer.domElement);

        const loader = new THREE.STLLoader();

        loader.load('/static/model.stl', function (geometry) {

            const material = new THREE.MeshPhongMaterial({ color: 0x00ff00, specular: 0x111111, shininess: 200 });

            const mesh = new THREE.Mesh(geometry, material);

            scene.add(mesh);

            const ambientLight = new THREE.AmbientLight(0x404040);

            scene.add(ambientLight);

            const directionalLight = new THREE.DirectionalLight(0xffffff, 0.5);

            directionalLight.position.set(1, 1, 1);

            scene.add(directionalLight);

            camera.position.z = 100;

            const animate = function () {

                requestAnimationFrame(animate);

                mesh.rotation.x += 0.01;

                mesh.rotation.y += 0.01;

                renderer.render(scene, camera);

            };

            animate();

        });

    </script>

</body>

</html>

4. 放置静态文件

在static文件夹中放置你的360全景图和STL模型文件。例如:

- static/360_image.jpg:360全景图

- static/model.stl:STL模型文件

5. 运行应用

在终端中运行你的Flask应用:

python app.py

6. 访问应用

打开浏览器,访问http://127.0.0.1:5000/,你将看到选择浏览模式的页面。点击链接即可查看360全景图或STL模型。

总结

通过以上步骤,你可以使用Flask实现一个简单的Web应用,用于浏览360全景图和STL模型。你可以根据需要进一步扩展和美化这个应用。


http://www.ppmy.cn/ops/166080.html

相关文章

深搜专题9:取数游戏

输入描述 第一行有一个正整数 T&#xff0c;表示了有 T 组数据。 对于每一组数据&#xff0c;第一行有两个正整数 N 和 M&#xff0c;表示了数字矩阵为 N 行 M 列。 接下来 N 行&#xff0c;每行 M 个非负整数&#xff0c;描述了这个数字矩阵。 对于20%的数据&#xff0c;1…

JVM调优关注的核心指标?

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

新疆美女演员吾热叶提正式加入创星演员出道计划,开启演艺事业新篇章

2月25日&#xff0c;演员吾热叶提正式加入“创星演员出道计划”&#xff0c;不仅得到参演都市爱情喜剧《和我结婚吧》角色的机会&#xff0c;还获得网剧《一念逍遥》的出演机会&#xff0c;自此开启全新影视之路。作为拥有无限潜力的演员&#xff0c;相信吾热叶提能凭借自身实力…

vue3 elementUi table自由渲染组件

文章目录 前言CustomTable如何使用tableColumn 属性h函数创建原生元素创建组件动态生成 前言 elementui中的table组件&#xff0c;表格中想要自由地渲染内容&#xff0c;是一种比较麻烦的事情&#xff0c;比如你表格中想要某一列插入一个button按钮&#xff0c;是不是要用插槽…

CSS元素层叠顺序规则

CSS元素层叠顺序规则 看图说话总结: background/borderz-index(<0)blockfloatinline/inline-blockz-index(0,auto)z-index (>0)

【CentOS】搭建Radius服务器

目录 背景简介&#xff1a;Radius是什么&#xff1f;Radius服务器验证原理搭建Radius服务器环境信息yum在线安装配置FreeRADIUS相关文件clients.conf文件users文件重启服务 验证 参考链接 背景 在项目中需要用到Radius服务器作为数据库代理用户的外部验证服务器&#xff0c;做…

基于微信小程序的小区管理系统设计与实现【lw+源码+部署+视频+讲解】

第1章 绪论 1.1 研究背景 互联网时代不仅仅是通过各种各样的电脑进行网络连接的时代&#xff0c;也包含了移动终端连接互联网进行复杂处理的一些事情。传统的互联网时代一般泛指就是PC端&#xff0c;也就是电脑互联网时代&#xff0c;但是最近几十年&#xff0c;是移动互联网…

数据挖掘导论——第二章:数据

谈数据之前&#xff0c;我们要先知道数据有哪几种类型。数据的维度&#xff0c;数据的频率、位置、分布&#xff08;方差或标准差衡量&#xff09;等。 接着就是数据的质量&#xff0c;数据挖掘着眼于要么是对数据质量问题的检测和纠正&#xff0c;要么是使用可以容忍低质量数…