mesh threejs 属性_首个threejs项目-前端填坑指南

本文详细介绍了使用threejs在前端开发中遇到的模型导入导出问题,包括C4D、Blender的配合使用,以及单个模型和动画模型的导出策略。在模型加载到页面中,作者分享了模型材质丢失、大小优化以及圆周运动的实现。文章还探讨了模型在空间中的位置设定、交互设计,以及灯光效果的调整,对于理解threejs在实际项目中的应用有较大帮助。
摘要由CSDN通过智能技术生成

第一次使用threejs到实际项目中,开始的时候心情有点小激动,毕竟是第一次嘛,然而做着做着就感受到这玩意水好深,满满的都是坑,填都填不过来。经过老板20天惨无人道的摧残,终于小有成就。

因为第一次搞这玩意,相对的遇到的问题也是大把的,让我来一一诉说一路上遇到的各种问题。

开发使用: C4D、Blender2.75、[threejs-r72](http://threejs.org/)

万事开头难,第一个问题就是怎么才能把3d软件中做好的模型显示在浏览器中。

一、模型在软件中的导入与导出。

这个项目中涉及到单个模型和动画模型,而不同模型的导入导出有差异,下面就告诉大家我是如何将坑填平的。

1、单个模型:

因为自己不会使用3D软件建模,只能求助公司大神设计师来一起搞。刚开始的想法是直接用3d软件建模然后直接导出obj格式来用,然后设计师用C4D做好了一个测试模型,发现模型数量少的话网页的大小还可以接受,但是由于项目的模型数量比较多,然后粗算了一下模型总的大小,发现超出了预想,所以得另寻它法。

接着在网上搜索发现Blender这玩意,由于设计师对C4D情有独钟不会Blender软件,所以决定用C4D做好模型然后导出obj格式接着再导入到Blender里面,再经由Blender导出需要的格式。

因为是第一次倒腾这个软件,所以并不会导出。然后就在网上搜素了怎么用Blender导出的json、js文件。经过测试js文件导出比较大,最后果断选择json。

在软件中如何导入导出如图所示:

图一 (左边为导入obj,右边导出json)

2、动画模型:

由于设计师出一个动画模型也没有这么快,就没法进行导出测试。于是看到threejs官网里有demo中使用的动画模型,我就拿过来进行测试,发现动画模型跟单个模型导出选择有差异然后发现更单个模型的导出有出入,经过反复的测试,得到导动画模型需要注意的几点,

(1)选择好动画的帧数,如果没选择,导出的json文件会有空帧。并且文件也会相对增大。

(2)选择好导出选项中Animation,一般就选择Morph Animation、Embed Animation选项。

单个模型以及动画模型导出选项如下图所示:

图二 (左边为导出单个模型,右边导出动画模型)

注:导出单个带材质模型需要在导出选项的时候需要在shading选项中选择Face Materials。

拿着设计师做好的动画模型导出json格式后碰到了一些问题,虽然json格式的大小相比obj格式的要小一点,不过项目中有人物的动画模型导出的json格式大小还是太大。然后为了解决这个问题,跟设计师进行讨论,然后得到以下解决方案:

(1)将模型的面和顶点在不影响正常显示的情况下进行删减

(2)对动画模型的帧数、面、顶点也进行删减

经过反复的修改和测试终于将动画模型控制在500-1000KB左右,单个模型控制在100K左右。

模型的导出问题解决了然后是对模型进行导入到页面中去。

二、模型加载到页面

在threejs官网上看到利用obj格式加载的demo比较多,所以就直接使用的是obj的格式模型进行加载,根据demo利用THREE.OBJLoader()、THREE.OBJMTLLoader()进行加载。然后设计大神给了我一个带材质的模型让我进行测试,发现两问题:

(1)模型材质丢失

(2)模型的大小太大(模型量少大小还可以接受,考虑到此次项目中的模型量多,估算了一下大概

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 记时刻 的人口为 ,已知0时刻的人口为 ,假设人口增长率随着人口数量的增加而线性下降,即从 到 人口的增量与 成正比。建立人口增长模型,求解并作出解的大致图形。(具体解答见书上P12) 解为 ,大致图形如下: 2. 试在matlab编程,用以下美国人口数据拟合人口增长模型: ,确定其待定参数 和 。 年 份 1790 1800 1810 1820 1830 1840 1850 人口(×106) 3.9 5.3 7.2 9.6 12.9 17.1 23.2 年 份 1860 1870 1880 1890 1900 1910 1920 人口(×106) 31.4 38.6 50.2 62.9 76.0 92.0 106.5 年 份 1930 1940 1950 1960 1970 1980 人口(×106) 123.2 131.7 150.7 179.3 204.0 226.5 Matlab常用函数名称列表:interp1、polyfit、polyval、fzero、fsolve、fminbnd、fminsearch、fmincon、lsqcurvefit、ode45、limit、diff、int。 解答: 1)先定义一个函数文件myfun.m: function f=myfun(a,t) f=exp(a(1)*t+a(2)); 2)然后在命令行输入以下命令: x=1790:10:1990; y=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76 92 106.5 123.2 131.7 150.7 179.3 204 226.5 251.4]; a0=[0.001,1]; % 初值 a=lsqcurvefit('myfun',a0,x,y); 得到 =exp(a(2)), =a(1)。 3. P79习题2:建立不允许缺货的生产销售存贮模型。生产速率为常数 ,销售速率为常数 , 。在每个生产周期 内,开始一段时间( )一边生产一边销售,后来一段时间( )只销售不生产,画出贮存量 的图形。每次生产准备费为 , 每天每件产品贮存费为 ;并以总费用最小为目标确定最优生产周期。讨论 和 的情况。 解答: 的图形如右。 一个周期内的存贮费 乘于图三角形的面积, 再加上生产准备费 ,得到一周期的总费用为: 而 ,既有 ,故上式为: 。 故单位时间总费用为: 。 利用微分法求 使 最小。使 达到最小值的最优周期为: 。 当k>>r时, ,相当于不考虑生产的情况.当k  r时 ,因为产量被销量抵消,无法形成贮存量。 4. 解书本上P130的习题1。某银行经理计划用一笔资金进行有价证券的投资,可供购进的证券以及其信用等级、到期年限、收益如下表1所示,按照规定,市政证券的收益可以免税,其他证券的收益需按50%的税率纳税,此外还有以下限制: 1)政府及代办机构的证券总共至少要购进400万元; 2)所购证券的平均信用等级不超过1.4(信用等级数字越小,信用程序越高); 3)所购证券的平均到期年限不超过5年。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值