案例:Three 纹理贴图 程序生成颜色值和透明值     状态:可编辑再运行    进入竖版
 运行结果 
x
 
1
<!DOCTYPE html>
2
<html>
3
<head>
4
  <meta charset="UTF-8">
5
  <style>
6
    body {
7
      margin: 0;
8
      overflow: hidden;
9
      /* 隐藏body窗口区域滚动条 */
10
    }
11
  </style>
12
  <!--引入three.js三维引擎-->
13
  <script src="/js/threejs/threer92.js"></script>
14
  <script src="/example/threejs/solarsystem/files/OrbitControls.js"></script>
15
</head>
16
17
<body>
18
  <script>
19
    //创建场景
20
    var scene = new THREE.Scene();
21
22
var geometry = new THREE.PlaneGeometry(128, 128); //矩形平面
23
/**
24
 * 创建纹理对象的像素数据
25
 */
26
var width = 32; //纹理宽度
27
var height = 32; //纹理高度
28
var size = width * height; //像素大小
29
var data = new Uint8Array(size * 4); //size*4:像素在缓冲区占用空间
30
for (let i = 0; i < size * 4; i += 4) {
31
  // 随机设置RGB分量的值
32
  data[i] = 255 * Math.random()
33
  data[i + 1] = 255 * Math.random()
34
  data[i + 2] = 255 * Math.random()
35
  // 设置透明度分量A
36
  data[i + 3] = 255 * 0.5
37
}
38
// 创建数据文理对象   RGBA格式:THREE.RGBAFormat
39
var texture = new THREE.DataTexture(data, width, height, THREE.RGBAFormat);
40
texture.needsUpdate = true; //纹理更新
41
//打印纹理对象的image属性
42
console.log(texture.image);
43
44
var material = new THREE.MeshPhongMaterial({
45
  map: texture, // 设置纹理贴图
46
  transparent:true,//允许透明设置
47
  side:THREE.DoubleSide
48
});