Skip to content

案例展示

法线纹理贴图

<template>
  <div id="TO"></div>
</template>

<script setup>
import { onMounted } from 'vue';

onMounted(() => {
  //初始化场景
  let TO = new ThingOrigin("fileModel", document.getElementById("TO"), {
    helper: {//辅助工具
      axes: {
        active: false,
      },
      grid: {
        active: false,
      },
    },
  })
  // 批量创建材质贴图
  const maps = TO.material.initTextureMaps({
    map: { url: `${import.meta.env.BASE_URL}img/materials/gray_rocks_diff_2k.jpg` },//基础贴图
    displacement: { url: `${import.meta.env.BASE_URL}img/materials/gray_rocks_disp_2k.png` }, //位移贴图
  });
  //创建高光材质
  const material = TO.material.initPhongMaterial({
    map: maps.map, //贴图
    displacementMap: maps.displacement, //位移贴图
  })

  //创建网格模型
  TO.model.initPlane({
    name: "wallMesh",
    base: {
      width: 1000, //平面在 X 轴方向的宽度
      height: 1000, //平面在 Y 轴方向的高度
    },
  }).then(mesh => {
    mesh.material = material;
    //添加到场景中
    TO.scene.add(mesh)
  })

});

</script>

<style scoped>
#TO {
  width: 100%;
  height: 400px;
  position: relative;
}
</style>

API 介绍

material.initTextureMaps

方法签名返回值描述
initTextureMaps(params: MaterialMapsParams)Texture批量创建纹理贴图

MaterialMapsParams 参数说明:

参数名说明类型必填默认值
map基础贴图Omit<BaseMapParams, "mapType">--
normal通过法线向量模拟表面细节,比 bumpMap 更精确Omit<NormalMapParams, "mapType">--
roughness控制表面粗糙度,影响高光大小和反射清晰度Omit<BaseMapParams, "mapType">--
metalness控制表面金属属性,影响反射和环境映射效果Omit<BaseMapParams, "mapType">--
ao环境光遮蔽贴图,增强模型立体感,不影响光照方向Omit<BaseMapParams, "mapType">--
emissive自发光贴图,使物体表面发光,不受光照影响Omit<BaseMapParams, "mapType">--
displacement通常用于更强烈的表面变形Omit<BaseMapParams, "mapType">--
alpha控制材质透明度,黑色透明,白色不透明,需配合 transparent: true 使用Omit<BaseMapParams, "mapType">--
bump通过明暗差异模拟表面凹凸,计算量小于法线贴图Omit<BaseMapParams, "mapType">--