Forge Viewer中如何不显示材质

通常情况下,Forge的模型提取和转换服务 将把模型的材质也转换,在Forge Viewer加载模型时,材质也将显示出来。材质会占用一定的显存,造成对于某些超大的模型,显示和漫游的响应延迟。

而有些时候,一个模型管理应用主要关心模型形体和其属性,问对材质要求度不高。如果能不渲染材质,那么对于模型查看的体验会有一些改善。

Forge Viewer的API对象中,有个matman(),它是管理所有缺省材质和额外附加材质的集合,因此,可以遍历其材质列表,一一设置为期望的简单颜色或灰度。可以记下原材质的信息,用于恢复材质状态。

注意:如果对象的显示定义只是简单的颜色,而非材质,则这个方法不起作用。

//保存所有材质信息
var oldTextures = new Array();
//保存所有颜色信息
var oldColors = new Array();

//去掉材质
function hideTexture() {
    //获取材质列表
    var mats = NOP_VIEWER.impl.matman()._materials;
    //定义一个颜色
    var grey = new THREE.Color(0.5, 0.5, 0.5);
    //遍历材质
    for (index in mats) {
        m = mats[index];

        //保存材质信息
        oldTextures[index] = m.map;
        oldColors[index] = m.color;

        //设置材质为空,并用定义的颜色
        m.map = null;
        m.color = grey;
        //告知Viewer刷新
        m.needsUpdate = true; 
    }
    NOP_VIEWER.impl.invalidate(true, true, false);
}

//恢复材质
function showTexture()
{
    //获取材质列表
    var mats = NOP_VIEWER.impl.matman()._materials;
    //遍历材质
    for (index in mats) {
        m = mats[index];
 

        m.map = oldTextures[index];
        m.color = oldColors[index];;
        m.needsUpdate = true; 
    }
    NOP_VIEWER.impl.invalidate(true, true, false);

}

以下是去掉材质前后的对比。

图片描述
图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值