md,艹,这玩意得理解,只看代码不管事
效果图
代码
import * as THREE from 'three'
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'
import { GUI } from 'three/examples/jsm/libs/lil-gui.module.min.js'
import * as TWEEN from 'three/examples/jsm/libs/tween.module.js'
import { EXRLoader } from 'three/addons/loaders/EXRLoader.js'
import { LogLuvLoader } from 'three/addons/loaders/LogLuvLoader.js'
import { RGBMLoader } from 'three/addons/loaders/RGBMLoader.js'
const scence = new THREE. Scene ( ) const camera = new THREE. PerspectiveCamera ( 45 , window. innerWidth / window. innerHeight, 0.1 , 1000 )
camera. position. set ( 2 , 2 , 5 )
camera. lookAt ( 0 , 0 , 0 ) const renderer = new THREE. WebGLRenderer ( { antialias : true
} )
renderer. setSize ( window. innerWidth, window. innerHeight)
document. body. appendChild ( renderer. domElement)
const axesHelper = new THREE. AxesHelper ( 5 )
scence. add ( axesHelper) const controls = new OrbitControls ( camera, renderer. domElement)
controls. dampingFactor = 0.05
function animate ( ) { controls. update ( ) requestAnimationFrame ( animate) renderer. render ( scence, camera) TWEEN . update ( )
}
animate ( )
const planeGeometry = new THREE. PlaneGeometry ( 2 , 2 )
const planeMaterial = new THREE. MeshBasicMaterial ( { map : new THREE. TextureLoader ( ) . load ( '../public/assets/texture/sprite0.png' ) , side : THREE . DoubleSide, transparent : true
} )
const plane = new THREE. Mesh ( planeGeometry, planeMaterial)
plane. renderOrder = 0
scence. add ( plane)
const planeGeometry_1 = new THREE. PlaneGeometry ( 2 , 2 )
const planeMaterial_1 = new THREE. MeshBasicMaterial ( { map : new THREE. TextureLoader ( ) . load ( '../public/assets/texture/lensflare0_alpha.png' ) , side : THREE . DoubleSide, transparent : true
} )
const plane_1 = new THREE. Mesh ( planeGeometry_1, planeMaterial_1)
plane_1. position. z = 2
plane_1. renderOrder = 1
scence. add ( plane_1)
plane. material. depthTest = true
plane. material. depthWrite = true
plane. material. depthFunc = THREE . LessEqualDepthplane_1. material. depthTest = true
plane_1. material. depthWrite = true
plane_1. material. depthFunc = THREE . LessEqualDepthconst gui = new GUI ( ) let gui_0 = gui. addFolder ( 'plane' )
gui_0. add ( plane. material, 'depthTest' ) . name ( '深度测试' ) . onChange ( ( ) => { plane. material. needsUpdate = true
} ) gui_0. add ( plane. material, 'depthWrite' ) . name ( '深度写入' ) . onChange ( ( ) => { plane. material. needsUpdate = true
} ) gui_0. add ( plane. material, 'depthFunc' , { 'THREE.LessEqualDepth' : THREE . LessEqualDepth, 'THREE.NeverDepth' : THREE . NeverDepth, 'THREE.AlwaysDepth' : THREE . AlwaysDepth, 'THREE.GreaterDepth' : THREE . GreaterDepth,
} ) let gui_1 = gui. addFolder ( 'plane_1' )
gui_1. add ( plane_1. material, 'depthTest' ) . name ( '深度测试' ) . onChange ( ( ) => { plane_1. material. needsUpdate = true
} ) gui_1. add ( plane_1. material, 'depthWrite' ) . name ( '深度写入' ) . onChange ( ( ) => { plane_1. material. needsUpdate = true
} ) gui_1. add ( plane_1. material, 'depthFunc' , { 'THREE.LessEqualDepth' : THREE . LessEqualDepth, 'THREE.NeverDepth' : THREE . NeverDepth, 'THREE.AlwaysDepth' : THREE . AlwaysDepth, 'THREE.GreaterDepth' : THREE . GreaterDepth,
} )