import * as THREE from "three"
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"
import { DirectionalLight, DoubleSide, HemisphereLight, SphereBufferGeometry} from "three";
import{EffectComposer} from "three/examples/jsm/postprocessing/EffectComposer"
import{OutlinePass} from "three/examples/jsm/postprocessing/OutlinePass"
import{RenderPass} from "three/examples/jsm/postprocessing/RenderPass"
var renderer = new THREE.WebGLRenderer({ antialias: true });
document.body.appendChild(renderer.domElement);
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor('rgba(135,206,250,0.5)',1.0);
var mouse = new THREE.Vector2();
var selectedObjects = [];
var raycaster = new THREE.Raycaster();
window.addEventListener("resize", () => {
renderer.setSize(window.innerWidth, window.innerHeight);
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
effectComposer.setSize(window.innerWidth,window.innerHeight);
})
var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.set(200, 300, 200)
var control = new OrbitControls(camera, renderer.domElement);
var scene = new THREE.Scene();
var light = new HemisphereLight(0xffffff, 0x444444);
scene.add(light);
var sphereGeometry = new SphereBufferGeometry(5, 12, 12);
var material = new THREE.MeshPhongMaterial({color:0xff0000,side:DoubleSide});
var sphereMesh = new THREE.Mesh(sphereGeometry, material)
scene.add(sphereMesh);
var textureTree = new THREE.TextureLoader().load("./assets/tree.png");
for (let i = 0; i < 100; i++) {
var spriteMaterial = new THREE.SpriteMaterial({
map:textureTree,
});
var sprite = new THREE.Sprite(spriteMaterial);
scene.add(sprite);
sprite.scale.set(100, 100, 1);
var k1 = Math.random() - 0.5;
var k2 = Math.random() - 0.5;
sprite.position.set(1000 * k1, 50, 1000 * k2)
}
var geometry = new THREE.PlaneGeometry(1000, 1000);
var texture = new THREE.TextureLoader().load("grass.jpg");
texture.wrapS = THREE.RepeatWrapping;
texture.wrapT = THREE.RepeatWrapping;
texture.repeat.set(10, 10);
var material = new THREE.MeshLambertMaterial({
color: 0x777700,
});
var mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
mesh.rotateX(-Math.PI/2);
update()
function update() {
console.log('刷新')
renderer.render(scene, camera);
requestAnimationFrame(update);
}
