分类: 便签
blender-快捷键
Blender 常用快捷键:
一、通用快捷键
1. 视图操作
鼠标中键拖动 :旋转视图。
Shift + 鼠标中键拖动 :平移视图。
Ctrl + 鼠标中键拖动 :缩放视图。
数字键 1/3/7 :前视图、右视图、顶视图。
数字键 5 :切换透视/正交视图。
Home :显示所有物体。
.(小数点) :聚焦选中物体。
2. 选择操作
左键 :选择物体。
A :全选/取消全选。
B :框选。
C :刷选(按住左键拖动选择)。
Shift + 左键 :多选。
Alt + 左键 :选择边循环或面循环。
3. 编辑模式
Tab :切换物体模式/编辑模式。
Ctrl + Tab :选择顶点/边/面模式。
E :挤出。
S :缩放。
R :旋转。
G :移动。
Ctrl + B :倒角。
Ctrl + R :环切。
二、建模快捷键
1. 基本操作
Shift + A :添加物体(网格、曲线、灯光等)。
M :移动物体到其他集合。
Ctrl + J :合并物体。
P :分离选中部分。
2. 编辑模式
Ctrl + E :边菜单(标记边、桥接边等)。
Ctrl + F :面菜单(填充、三角化等)。
Ctrl + V :顶点菜单(合并顶点、平滑顶点等)。
Ctrl + Shift + B :顶点倒角。
三、动画快捷键
1. 关键帧操作
I :插入关键帧(位置、旋转、缩放等)。
Alt + I :删除关键帧。
Shift + Ctrl + Alt + C :设置原点。
2. 时间轴操作
空格键 :播放/暂停动画。
Shift + 空格键 :反向播放动画。
左右箭头 :逐帧移动。
K :在时间轴上标记位置。
四、材质与渲染快捷键
1. 材质编辑
Shift + F3 :打开着色器编辑器。
Ctrl + T :添加纹理坐标和映射节点。
2. 渲染设置
F12 :渲染当前帧。
Ctrl + F12 :渲染动画。
Z :切换视图着色模式(线框、实体、渲染等)。
五、其他常用快捷键
1. 文件操作
Ctrl + N :新建文件。
Ctrl + O :打开文件。
Ctrl + S :保存文件。
Ctrl + Shift + S :另存为。
2. 工具操作
T :打开左侧工具面板。
N :打开右侧属性面板。
F3 :搜索操作。
Ctrl + Z :撤销。
Ctrl + Shift + Z :重做。
六、自定义快捷键
1. 打开快捷键设置 :
进入 Edit > Preferences > Keymap 。
2. 修改快捷键 :
搜索需要修改的操作,点击右侧的快捷键进行修改。
3. 保存设置 :
点击 Save Preferences ,保存自定义快捷键。
vue3动态效果
安装
npm install animate.css --save
引入
import 'animate.css';
使用
<div class="animate__animated animate__bounce">Hello, Animate.css!</div>
自定义
.your-classname {
animation-duration: 1.8s; /* 动画持续时间 */
animation-delay: 2s; /* 动画延迟时间 */
animation-iteration-count: infinite; /* 动画循环次数 */
}
2. AOS (Animate On Scroll)
官网:https://michalsnik.github.io/aos/
3. WOW.js
4.GSAP
官网 :https://gsap.com/ GitHub :https://github.com/greensock/GSAP
官网 :https://animejs.com/ GitHub :https://github.com/juliangarnier/anime
官网 :https://inspira-ui.com/ GitHub :https://github.com/unovue/inspira-ui
这是一款专门为 Vue3 设计的动效组件库,官方示例有 100 + 个。它自带超多惊艳的动画效果,像炫酷背景、粒子特效、按钮交互等,无需额外引入其他库就能做出流畅的过渡效果。
7. Uiverse.io
官网 :https://uiverse.io/ GitHub :https://github.com/uiverse-io
8. NavNav+
9. Galacean Engine
Galacean Engine 是蚂蚁重磅开源 Web 3D 动效引擎,是一个专注于 3D 场景实时渲染的引擎,它在动画方面也有着出色的表现。
官网 :https://galacean.antgroup.com/engine/ GitHub :https://github.com/galacean/engine
11. Tween.js
官网 :https://tweenjs.github.io/tween.js/docs/user_guide.html GitHub :https://github.com/tweenjs/tween.js
官网 :https://motion.unovue.com/
GitHub :https://github.com/motiondivision/motion-vue
官网 :https://docs.tresjs.org GitHub :https://github.com/tresjs/tres
在 alpine linux 中使用 webcam uvcdynctrl
apk add libxml2-dev libxml2 libxml2-utils libxml++-2.6-dev libjpeg-turbo-dev libturbojpeg- apk add build-base git cmake autoconf automake libtool wget -O libwebcam-src-0.2.5.tar.gz https://sourceforge.net/projects/libwebcam/files/source/libwebcam-src-0.2.5.tar.gz/download tar xvzf libwebcam-src-0.2.5.tar.gz cd libwebcam-0.2.5/ cmake . make make install uvcdynctrl -l
apk add v4l-utils v4l-utils-dev v4l-utils-libs qv4l2 libcamera-v4l2
uvcdynctrl -d /dev/video0 -S 6:8 '(LE)0x50ff' uvcdynctrl -d /dev/video0 -S 6:15 '(LE)0x00f6' uvcdynctrl -d /dev/video0 -S 6:8 '(LE)0x2500' uvcdynctrl -d /dev/video0 -S 6:8 '(LE)0x5ffe' uvcdynctrl -d /dev/video0 -S 6:15 '(LE)0x0003' uvcdynctrl -d /dev/video0 -S 6:15 '(LE)0x0002' uvcdynctrl -d /dev/video0 -S 6:15 '(LE)0x0012' uvcdynctrl -d /dev/video0 -S 6:15 '(LE)0x0004' uvcdynctrl -d /dev/video0 -S 6:8 '(LE)0x76c3' uvcdynctrl -d /dev/video0 -S 6:10 '(LE)0x0400'
安装成功后可以在bash下运行命令:uvcdynctrl -d /dev/video0 -S 6:10 '(LE)0x0400' 来控制该摄像头显示双摄像头数据
# uvcdynctrl -d /dev/video0 -c [libwebcam] Invalid V4L2 control type encountered: ctrl_id = 0x00980001, name = 'User Controls', type = 6 [libwebcam] Invalid or unsupported V4L2 control encountered: ctrl_id = 0x00980001, name = 'User Controls' Listing available controls for device /dev/video0: Brightness Contrast Saturation Hue White Balance, Automatic Gamma Power Line Frequency White Balance Temperature Sharpness Backlight Compensation
uvcdynctrl -d /dev/video0 -s "Brightness" 128 uvcdynctrl -d /dev/video0 -s "Exposure, Auto" 1 # 关闭自动曝光 uvcdynctrl -d /dev/video0 -s "Exposure (Absolute)" 100
参考:
https://blog.51cto.com/u_15202985/6005161
https://www.cnblogs.com/astreye/p/8399792.html
PJLink-CSharp-连接投影机
控制类
using System;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
public class PJLinkController
{
private readonly string _ipAddress;
private readonly int _port = 4352; // PJLink 默认端口
private readonly string _password = ""; // 如果投影机设置了密码,需在此填入
public PJLinkController(string ipAddress, string password = "")
{
_ipAddress = ipAddress;
_password = password;
}
// 连接投影机并执行命令
private async Task<string> SendCommandAsync(string command)
{
using var client = new TcpClient();
await client.ConnectAsync(_ipAddress, _port);
using var stream = client.GetStream();
var buffer = new byte[1024];
// 读取欢迎消息
var bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length);
var welcomeMessage = Encoding.ASCII.GetString(buffer, 0, bytesRead);
// 验证是否需要密码
string authString = "";
if (welcomeMessage.Contains("%1"))
{
// 计算认证哈希
var hash = CalculateHash(welcomeMessage.Substring(2, 8));
authString = $"%1{hash}";
}
// 发送带认证的命令
var commandBytes = Encoding.ASCII.GetBytes($"{authString}{command}\r");
await stream.WriteAsync(commandBytes, 0, commandBytes.Length);
// 读取响应
bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length);
return Encoding.ASCII.GetString(buffer, 0, bytesRead);
}
// 计算认证哈希
private string CalculateHash(string salt)
{
if (string.IsNullOrEmpty(_password)) return "";
return $"{salt}{_password.GetHashCode():X8}";
}
// 电源控制
public async Task PowerOnAsync() => await SendCommandAsync("%1POWR 1");
public async Task PowerOffAsync() => await SendCommandAsync("%1POWR 0");
public async Task<string> GetPowerStatusAsync() => await SendCommandAsync("%1POWR ?");
// 3D模式控制(理光特有命令)
public async Task Set3DModeAsync(int mode)
{
// 理光3D模式代码:
// 0 = 3D关闭, 1 = 帧连续, 2 = 并排, 3 = 上下, 4 = 帧封装
await SendCommandAsync($"%1AVMT 3D {mode}");
}
public async Task<string> Get3DModeAsync() => await SendCommandAsync("%1AVMT 3D ?");
// 输入源切换
//public async Task SetInputSourceAsync(string source)
//{
// // 输入源代码示例:
// // RGB1 = 11, RGB2 = 12, HDMI1 = 31, HDMI2 = 32, Network = 41
// await SendCommandAsync($"%1INPT {source}");
//}
// 信号源切换方法
public async Task SetInputSourceAsync(string sourceCode)
{
// 验证输入源代码格式
if (!System.Text.RegularExpressions.Regex.IsMatch(sourceCode, @"^\d{2}$"))
{
throw new ArgumentException("输入源代码必须是两位数字", nameof(sourceCode));
}
// 输入源代码示例:
// RGB1 = 11, RGB2 = 12, HDMI1 = 31, HDMI2 = 32, Network = 41
await SendCommandAsync($"%1INPT {sourceCode}");
}
// 获取当前输入源
public async Task GetCurrentInputSourceAsync()
{
var response = await SendCommandAsync("%1INPT ?");
// 解析响应 (格式: %1INPT=xx)
if (response.Contains("="))
{
return response.Split('=')[1].Trim();
}
return "未知";
}
}
使用
// 使用示例
public static async Task Main()
{
var controller = new PJLinkController("192.168.1.100"); // 替换为投影机实际IP
// 开机
await controller.PowerOnAsync();
Console.WriteLine("已发送开机命令");
// 等待投影机启动
await Task.Delay(30000); // 等待30秒
// 切换到HDMI1
await controller.SetInputSourceAsync("31");
Console.WriteLine("已切换到HDMI1");
// 开启3D模式(帧连续)
await controller.Set3DModeAsync(1);
Console.WriteLine("已开启3D模式");
// 获取电源状态
var status = await controller.GetPowerStatusAsync();
Console.WriteLine($"电源状态: {status}");
// 5分钟后关机
await Task.Delay(300000);
await controller.PowerOffAsync();
Console.WriteLine("已发送关机命令");
}