Compare commits

...

5 Commits

Author SHA1 Message Date
7d1ac6d010 Merge 150c8713ae into 869f3de520 2025-02-01 10:18:13 +00:00
869f3de520 doc: Update README.md 2025-01-28 00:40:58 +08:00
da9780f4a7 doc: update docs/yazi.md 2025-01-24 21:48:08 +08:00
150c8713ae Merge branch 'jaywcjlove:main' into feat/threejs 2024-06-25 17:10:21 +08:00
8ea3c71774 docs: Add Three.js Cheat Sheet
Added a Three.js cheat sheet to the docs directory, which includes introductions and sample codes on getting started, geometry and materials, lighting, textures, animations, and other related content, to provide developers with a quick reference and guide for using Three.js.
2024-06-25 12:43:41 +08:00
3 changed files with 276 additions and 72 deletions

View File

@ -464,33 +464,6 @@ Quick Reference
[贡献者](https://github.com/jaywcjlove/reference/graphs/contributors)列表,由 [contributors](https://github.com/jaywcjlove/github-action-contributors) 根据提交次数的先后顺序自动生成 [贡献者](https://github.com/jaywcjlove/reference/graphs/contributors)列表,由 [contributors](https://github.com/jaywcjlove/github-action-contributors) 根据提交次数的先后顺序自动生成
<!--rehype:style=padding-top:1rem;--> <!--rehype:style=padding-top:1rem;-->
## 赞助支持
<!--rehype:wrap-style=text-align: center;max-width: 650px;margin: 0 auto;&class=home-title-reset-->
非常感谢那些一直支持我开源工作的朋友们。如果您对我的工作感到满意,可以选择在[这里进行赞助](https://wangchujiang.com/#/sponsor)<!--rehype:target=_blank-->。如果目前经济上不宽裕,也可以通过下载并使用我开发的 [macOS 应用](https://wangchujiang.com/#/app)<!--rehype:target=_blank-->来支持我。以下是我个人开发的 macOS 应用:
<p style="display: inline-block">
<a target="_blank" href="https://wangchujiang.com/key-clicker/" title="KeyClicker for macOS"><img align="center" alt="KeyClicker" height="50" width="50" src="https://github.com/user-attachments/assets/5a19fcb9-cb81-4855-b4ea-31c604d9612a"></a>
<a target="_blank" href="https://wangchujiang.com/daybar/" title="DayBar for macOS"><img align="center" alt="DayBar" height="50" width="50" src="https://github.com/user-attachments/assets/b67d4a2e-92e2-4d8c-8c6f-2a1eb3e2fa93"></a>
<a target="_blank" href="https://wangchujiang.com/iconed/" title="Iconed for macOS"><img align="center" alt="Iconed" height="50" width="50" src="https://github.com/user-attachments/assets/8a35dc7b-4faf-4e2a-9311-f66d6844a896"></a>
<a target="_blank" href="https://wangchujiang.com/rightmenu-master/" title="RightMenu Master for macOS"><img align="center" alt="RightMenu Master" height="50" width="50" src="https://github.com/user-attachments/assets/39a76541-71bf-4de7-a01c-c62f0557dff5"></a>
<a target="_blank" href="https://wangchujiang.com/paste-quick/" title="Paste Quick for macOS"><img align="center" alt="Quick RSS" height="50" width="50" src="https://github.com/user-attachments/assets/bdaad5b7-9810-44ce-8f17-8410864465d2"></a>
<a target="_blank" href="https://wangchujiang.com/quick-rss/" title="Quick RSS for macOS/iOS"><img align="center" alt="Quick RSS" height="50" width="50" src="https://github.com/user-attachments/assets/374106b5-a448-4d1d-9ccb-b04b6bc681ed"></a>
<a target="_blank" href="https://wangchujiang.com/web-serve/" title="Web Serve for macOS"><img align="center" alt="Web Serve" height="50" width="50" src="https://github.com/user-attachments/assets/e1d9f76f-0f3d-4ba5-8a15-253ee173bb1c"></a>
<a target="_blank" href="https://wangchujiang.com/copybook-generator/" title="Copybook Generator for macOS/iOS"><img align="center" alt="Copybook Generator" height="50" width="50" src="https://github.com/jaywcjlove/jaywcjlove/assets/1680273/b90e42ff-158b-4534-82ca-5898fd0e8d73"></a>
<a target="_blank" href="https://wangchujiang.com/devtutor/" title="DevTutor for macOS/iOS"><img align="center" alt="DevTutor for SwiftUI" height="50" width="50" src="https://github.com/jaywcjlove/jaywcjlove/assets/1680273/f15c154d-0192-48eb-8e0e-9e245ffd974a"></a>
<a target="_blank" href="https://wangchujiang.com/regex-mate/" title="RegexMate for macOS/iOS"><img align="center" alt="RegexMate" height="50" width="50" src="https://github.com/jaywcjlove/jaywcjlove/assets/1680273/aabe5aa9-9a96-4390-8bed-c3e4023d0dea"></a>
<a target="_blank" href="https://wangchujiang.com/time-passage/" title="Time Passage for macOS/iOS"><img align="center" alt="Time Passage" height="50" width="50" src="https://github.com/jaywcjlove/time-passage/assets/1680273/6f30e429-e6f3-4dbe-9921-a5effe2a05e9"></a>
<a target="_blank" href="https://wangchujiang.com/IconizeFolder/" title="IconizeFolder for macOS"><img align="center" alt="Iconize Folder" height="50" width="50" src="https://github.com/jaywcjlove/jaywcjlove/assets/1680273/fa9d8b9c-1e51-4ded-877c-fa5b21c47220"></a>
<a target="_blank" href="https://wangchujiang.com/TextSoundSaver/" title="Textsound Saver for macOS/iOS"><img align="center" alt="Textsound Saver" height="50" width="50" src="https://github.com/jaywcjlove/jaywcjlove/assets/1680273/0595e842-980b-4574-8891-a8ba853a08be"></a>
<a target="_blank" href="https://wangchujiang.com/create-custom-symbols/" title="Create Custom Symbols for macOS"><img align="center" alt="Create Custom Symbols" height="50" width="50" src="https://github.com/jaywcjlove/jaywcjlove/assets/1680273/8cd022ce-a3f1-4e89-b7c6-6fbd0d4db77c"></a>
<a target="_blank" href="https://wangchujiang.com/DevHub/" title="DevHub for macOS"><img align="center" alt="DevHub" height="50" width="50" src="https://github.com/user-attachments/assets/4a44a4fd-67ce-430b-af0a-72f18feaa47d"></a>
<a target="_blank" href="https://wangchujiang.com/ResumeRevise/" title="Resume Revise for macOS"><img align="center" alt="Resume Revise" height="50" width="50" src="https://github.com/jaywcjlove/jaywcjlove/assets/1680273/c9954a20-1905-48de-bdf8-d71837974aa2"></a>
<a target="_blank" href="https://wangchujiang.com/palette-genius/" title="Palette Genius for macOS"><img align="center" alt="Palette Genius" height="50" width="50" src="https://github.com/jaywcjlove/jaywcjlove/assets/1680273/27340413-d355-45b2-8f6f-6ac37682d957"></a>
<a target="_blank" href="https://wangchujiang.com/symbol-scribe/" title="Symbol Scribe for macOS"><img align="center" alt="Symbol Scribe" height="50" width="50" src="https://github.com/jaywcjlove/jaywcjlove/assets/1680273/c7249f05-fa70-4def-a1e9-571d5f171fc9"></a>
</p>
<!--rehype:style=padding-top:1rem;max-width: 520px;margin: 0 auto;-->
## 国内镜像网站 ## 国内镜像网站
<!--rehype:wrap-style=text-align: center;max-width: 650px;margin: 0 auto;&class=home-title-reset--> <!--rehype:wrap-style=text-align: center;max-width: 650px;margin: 0 auto;&class=home-title-reset-->

246
docs/threejs.md Normal file
View File

@ -0,0 +1,246 @@
Three.js 备忘清单
===
Three.js 是一个跨浏览器的 JavaScript 库和 API用于创建和显示动画 3D 计算机图形。以下是一些常用的 Three.js 操作和用法。
入门
---
### 安装
```bash
# 使用 npm 安装
npm install three
```
### 基本场景设置
```javascript
import * as THREE from 'three';
// 创建场景
const scene = new THREE.Scene();
// 创建相机
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.z = 5;
// 创建渲染器
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// 渲染循环
function animate() {
requestAnimationFrame(animate);
renderer.render(scene, camera);
}
animate();
```
### 添加几何体
```javascript
// 创建几何体
const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
// 添加到场景
scene.add(cube);
```
### 响应窗口大小调整
```javascript
window.addEventListener('resize', () => {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
});
```
几何体与材质
---
### 常用几何体
```javascript
const box = new THREE.BoxGeometry(1, 1, 1);
const sphere = new THREE.SphereGeometry(1, 32, 32);
const plane = new THREE.PlaneGeometry(5, 5);
const cone = new THREE.ConeGeometry(1, 2, 32);
const cylinder = new THREE.CylinderGeometry(1, 1, 2, 32);
```
### 常用材质
```javascript
const basicMaterial = new THREE.MeshBasicMaterial({ color: 0xff0000 });
const lambertMaterial = new THREE.MeshLambertMaterial({ color: 0xff0000 });
const phongMaterial = new THREE.MeshPhongMaterial({ color: 0xff0000, shininess: 100 });
const standardMaterial = new THREE.MeshStandardMaterial({ color: 0xff0000 });
const physicalMaterial = new THREE.MeshPhysicalMaterial({ color: 0xff0000, roughness: 0.5 });
```
灯光
---
### 常用灯光
```javascript
const ambientLight = new THREE.AmbientLight(0x404040); // 环境光
scene.add(ambientLight);
const pointLight = new THREE.PointLight(0xffffff); // 点光源
pointLight.position.set(5, 5, 5);
scene.add(pointLight);
const directionalLight = new THREE.DirectionalLight(0xffffff); // 平行光
directionalLight.position.set(0, 1, 0);
scene.add(directionalLight);
const spotLight = new THREE.SpotLight(0xffffff); // 聚光灯
spotLight.position.set(5, 5, 5);
scene.add(spotLight);
```
纹理
---
### 加载纹理
```javascript
const textureLoader = new THREE.TextureLoader();
const texture = textureLoader.load('path/to/texture.jpg');
const material = new THREE.MeshBasicMaterial({ map: texture });
const geometry = new THREE.BoxGeometry();
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
```
动画
---
### 使用 Tween.js
```javascript
import TWEEN from '@tweenjs/tween.js';
function animate() {
requestAnimationFrame(animate);
TWEEN.update();
renderer.render(scene, camera);
}
const coords = { x: 0, y: 0 }; // 初始坐标
const tween = new TWEEN.Tween(coords)
.to({ x: 100, y: 100 }, 1000) // 目标坐标和持续时间
.easing(TWEEN.Easing.Quadratic.Out) // 缓动函数
.onUpdate(() => {
cube.position.set(coords.x, coords.y, 0);
})
.start();
animate();
```
高级操作
---
### 加载模型
```javascript
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
const loader = new GLTFLoader();
loader.load('path/to/model.glb', (gltf) => {
scene.add(gltf.scene);
});
```
### 使用 OrbitControls
```javascript
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
const controls = new OrbitControls(camera, renderer.domElement);
function animate() {
requestAnimationFrame(animate);
controls.update();
renderer.render(scene, camera);
}
animate();
```
### 使用 Raycaster
```javascript
const raycaster = new THREE.Raycaster();
const mouse = new THREE.Vector2();
function onMouseMove(event) {
mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;
raycaster.setFromCamera(mouse, camera);
const intersects = raycaster.intersectObjects(scene.children);
if (intersects.length > 0) {
intersects[0].object.material.color.set(0xff0000);
}
}
window.addEventListener('mousemove', onMouseMove);
```
性能优化
---
### 使用抗锯齿
```javascript
const renderer = new THREE.WebGLRenderer({ antialias: true });
```
### 降低阴影质量
```javascript
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap;
```
### 使用实例化几何体
```javascript
const geometry = new THREE.InstancedBufferGeometry();
const material = new THREE.MeshBasicMaterial();
const mesh = new THREE.InstancedMesh(geometry, material, count);
scene.add(mesh);
```
工具
---
### Three.js 编辑器
Three.js 编辑器是一个在线工具,可以用来创建和编辑 Three.js 场景。
- [Three.js 编辑器](https://threejs.org/editor/)
### 三维模型和纹理资源
- [Sketchfab](https://sketchfab.com/)
- [Poly Haven](https://polyhaven.com/)
另见
---
- [Three.js 官方文档](https://threejs.org/docs/)
- [Three.js 示例](https://threejs.org/examples/)

View File

@ -5,57 +5,41 @@ Yazi 备忘清单
入门 入门
---- ----
<!--rehype:body-class=cols-2-->
### 功能特点 ### 功能特点
<!--rehype:wrap-class=row-span-2-->
- 跨平台支持
`Yazi` 支持多种操作系统,包括 Linux、macOS 和 Windows。这使得用户可以在不同的平台上获得一致的体验 - <code>**跨平台支持**</code>Yazi 支持 Linux、macOS 和 Windows,提供一致的跨平台体验
- <code>**轻量高效**</code>:简洁设计,启动和操作快速,资源消耗低
- 轻量级和快速 - <code>**插件扩展**</code>:支持插件安装,灵活扩展功能
- <code>**文件操作**</code>:支持复制、剪切、粘贴、删除、重命名等操作,且支持批量和多选功能,提升效率
Yazi 是一个设计简洁、执行效率高的终端文件管理器。它的轻量级特性确保了在启动和操作过程中都能保持高速度和低资源消耗。
- 插件支持
Yazi 支持插件,用户可以根据需要安装和配置插件,以扩展文件管理器的功能
- 丰富的文件操作
Yazi 提供了一系列丰富的文件操作功能,包括复制、剪切、粘贴、删除、重命名等。此外,还支持批量操作和多选功能,极大提高了文件管理的效率。
### 安装 ### 安装
| 系统 | 安装方法 | | 系统 | 安装方法 |
| ----- | ----- | | ----- | ----- |
| **使用 Cargo 安装** | cargo install yazi | | 使用 Cargo 安装 | `cargo install yazi` |
| **Arch Linux** | yay -S yazi | | Arch Linux | `yay -S yazi` |
| **Debian/Ubuntu** | 可以使用 Cargo 进行安装 | | Debian/Ubuntu | 可以使用 `Cargo` 进行安装 |
| **macOS (使用 Homebrew)** | brew install yazi | | macOS (使用 Homebrew) | `brew install yazi` |
| **Windows (使用 Carg)** | cargo install yazi | | Windows (使用 Carg) | `cargo install yazi` |
| **Windows (使用 Scoop)** | scoop install yazi | | Windows (使用 Scoop) | `scoop install yazi` |
### 使用方法 ### 使用方法
#### 启动 #### 命令启动 Yazi
你可以在终端中通过以下命令启动 Yazi
```sh ```sh
yazi yazi
``` ```
#### 帮助 #### 查看 Yazi 的帮助文档
你可以通过以下命令查看 Yazi 的帮助文档
```sh ```sh
yazi --help yazi --help
``` ```
## 基本操作 ## 常用的快捷键
<!--rehype:body-class=cols-2-->
Yazi 文件管理器主要通过键盘快捷键进行操作。以下是一些常用的快捷键:
### 导航 ### 导航
@ -100,15 +84,15 @@ Yazi 文件管理器主要通过键盘快捷键进行操作。以下是一些常
## 自定义配置 ## 自定义配置
### 自定义配置 ### 自定义配置
<!--rehype:wrap-class=col-span-3-->
你可以通过编辑配置文件来自定义 Yazi。配置文件通常位于 `$HOME/.config/yazi/xxx.toml`
你可以在该文件中修改一些默认设置,例如快捷键绑定、主题颜色等。
- yazi.toml - 常规配置 通过编辑配置文件来自定义 `Yazi`,配置文件通常位于 `$HOME/.config/yazi/xxx.toml`,可修改默认设置如快捷键、主题等
- keymap.toml - 按键绑定配置。
- theme.toml - 配色方案配置 - `yazi.toml` - 常规配置
- `keymap.toml` - 快捷键绑定
- `theme.toml` - 主题配置
### 配置文件示例yazi.toml ### 配置文件示例yazi.toml
<!--rehype:wrap-class=row-span-2-->
```toml ```toml
[general] [general]
@ -150,6 +134,7 @@ enabled_plugins = ["git", "archive"]
``` ```
### keymap.toml 配置示例 ### keymap.toml 配置示例
<!--rehype:wrap-class=row-span-2-->
```toml ```toml
# 全局快捷键配置 # 全局快捷键配置