duangsuse::Echo
712 subscribers
4.24K photos
127 videos
583 files
6.44K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
#blender 线框 物理+纹理节点+粒子发射+弹性动画线

0. Layout UI tab ,Eevee渲染:freestyle. 编辑-设置-插件 开启 Cell Fracture
1.按小键盘0切换摄像机视角(可视图切换-行走漫游)。 放置Mesh物体,g移动s缩放r旋转。添加1立方体2平面,在右下[原子]徽标 令二者刚体-被动
2.设置材质-基础色,再选立方体,转到[Shading], 光泽BSDF(颜色=纹理-棋盘格(色1=纹理-迷幻) )
3.[扳手]下1钮 添加粒子-渲染=物体:平面,数量=42, 带旋转, 速度:z=8m/s
4.按F3 查Cell frac , 组名=C 。右上 右击"C"选中物体。转到[Scripting],控制台执行 bpy.ops.rigidbody.objects_add() 加入物理活动项
选一个近底的碎片,物理-被动&播放动画。

5.在[Animation]按I-手动插帧 /启用播放前圆点-自动插帧 调整(物理被动)对象位置,
选中需改变入场速率 的帧按T 选择弹球
(首次移需提前I个不改的帧,否则从帧0就开始动)

6.Ctrl F12 渲染动画,完成可渲染-查看
7. Tab UI 加号,进 [Video Editing],添加图像序列:选中=001.png,结束帧=250 (linux下默认在/tmp)
8.文件格式=FFmpeg, 容器/编码=MP4/H.264 ,再次渲染动画(也可以在6.里直接改)

然后你就做出来第一个3D动画..
brk.blend
1.5 MB
🌚在B站,视频做得像样首先就需要非线性速率动画(#KDE Kdenlive 没有..),但其实谈何容易啊,有的数据动画还得脚本生成 #cg

Blender3.0 的源码仅30M 。Demo 文件大包可以测试渲染性能
然后,Blender还新加了一个[非线性动画],按可复用序列(Y切分,Shift-T黏合)组织动画。Tab再左侧Pin 编辑单段动画
可以使用预制动画。弹性缩放就是例子(果宝特工贼多..)
#blender 4个官方Demo文件。 包含几何节点、2D pencil+NLA组动画

如果你用触摸板,在设置-输入里打开鼠标中键模拟,否则无法Alt拖动视图。
Blender的UI 由面板(标题/按钮+状态栏)组成,面板是可切分/合并/关闭的。在间隙十字光标-拖动就能切分新面板。 单击3D视图旁的加号开/拖拽关闭浮窗
Gizmo(Z-up 座标系小箭头)和选中高亮在3D视图状态栏右数第3 区开关,其他可在[视图]菜单调;(Shift)小键盘也可以调整视图座标
所有菜单项都能指定快捷键,往往还能在[Scripting]布局查看脚本宏

Shader节点可以用来定义纹理绘制/渲染后处理
duangsuse::Echo
什么最值得感恩
正确答案是一个也不选。因为这些全都值得感恩嘿嘿嘿😊
可能是来 #Telegram 太久,对党恩的习性越来越了解,类似的事情已经见怪不怪了。之后的中国只会越来越❤️

其实大家先讨论封不封时, 这首歌存在多少天都不重要了,泄民愤的目的达到了😒 然后再删,也就那样
Forwarded from 螺莉莉的黑板报
http://tridiv.com/

用 CSS + HTML 画三维物体的可视化编辑器。

你们……CSS 上脑的人好可怕……
#ce #plt 带步骤的四则计算器。递归逆波兰。22行代码
浅先=`;=;+ -;* / %`
流=(a, _s=[...a].values())=>()=>_s.next().value
切2D=(s,sp0,sp1)=>s.split(sp0).map(s=>s.split(sp1) )
{let t={},k; 切2D(浅先,';',' ').forEach((x,i)=>{for(k of x)t[k]=i}); 符深大=t}

符链=(s,l)=>{let a=[],add=x=>a.push(x),
o,x=()=>add(Number(s())),
one=ed=>{x(); let A,B;for(o=s(); (A=l[o])>=(B=l[ed]);)if(A!=B)one(o);else{add(ed);x();ed=o,o=s()} add(ed)}
one('');a.pop(); return a//深先. ^已优化:仅 l右>l现 递归.等价逆波兰, 注意o=s()只一次
}
{
B=document.body;B.innerHTML=`<input id=x> <b id=y>`
B.style.cssText=`display:flex;flex-direction:column; white-space:pre`
x.onchange=()=>{y.innerText=(this.expr=符链(流(x.value.split(/([-+*/%])\s*/g)), 符深大) ).join(" "); B.append('=',折叠(expr),'\n\n')}
}
折叠=(码,算=(st,k,a,b)=>{console.log(a,b,k,码); B.append(折叠([...st.slice(0,-2),a,b,k,...码],(_,k,a,b)=>a+k+b)+"\n");return eval(a+k+b)})=>{
let st=[],x;
while(null!=(x=码.shift()))(typeof x=='number')?st.push(x):
(i=> st.splice(i,2, 算(st,x,...st.slice(i)) ))(st.length-2)
if(st.length!=1)throw st; retu
#OOP #FP 可怜人的函数闭包是对象,可怜人用对象表示闭包,都很悲哀 :(
edit: 面向概念和面向动词各有所长,但我更喜欢FP, 语言只提供class会给复用带来很大的问题