Skip to content
On this page
b3d 操作笔记[[Blender 初见]]
切换三视图:` 在弹出的 Panel 中选择对应的视图
对象透明:
快捷键:ctrl+z
场景:批量选中编辑对象同一维度的 Vertex, EdgeFace
进入编辑模式:
快捷键:tab
场景:只有选中物体进入编辑模式后才能对物体进行编辑
编辑模式操作:
快捷键:g,r,s
场景:进入编辑模式后对三层级的编辑操作,分别对应移动(move|grab)、 旋转(rotate)和扩大(scale)
切换三层级:
快捷键:1,2,3
场景:进入编辑模式切换三层级,分别对应 Vertex, EdgeFace
锁定轴向:
快捷键:x,y,z
场景:编辑模式操作锁定轴向
移动视图:shift+mm (鼠标滚轮)
镜像物体:
操作步骤:
shift+a 添加一个 plain axis 到世界中
在物体面板选择扳手,镜像参照物选择 plain axis 进行对应坐标的方向的镜像
场景:对称物体进行建模时只需要建一半
设置坐标原点:
操作步骤:
进入编辑模式的 Vertex 层级(tab -> 1
选择想要的 Vertex
shift+s 在弹出的 Panel 选择 cursor to selected
退出编辑模式(tab) 右键 set origin -> origin to 3d cusor
场景:随着编辑导致物体自身坐标轴产生偏离需要修正
Vertex 沿 Edge 移动:
快捷键:shift+v
场景:保持四点同面不被破坏
特定视图(View Port)隐藏物体:
操作步骤:
先在右上角的 Outerliner 里新建一个 collection
把需要隐藏的物体拖入该 collection
选择需要隐藏物体的视图
选中 NsideBar -> View -> Collection -> LocalCollection
选对应的 collection 取消勾选(眼睛图案)
buffer 重复读取[[Go 系列]]
一个常见的坑,当我们使用 [[Gin]] 等框架编写 WEB 服务时,如果在中间件里 读取了 body ,就会导致后续的操作中读取不到 body 内容,看起来像是被清空了
这实际上与 io.Reader 这个接口的实现有关
如果你在 Google 上搜索相关问题的解决方案,得到的答案通常是让你读取完数据 再放回去,例如:
go
package main

import (
    "bytes"
    "fmt"
    "io"
    "io/ioutil"
)

func main() {
    var b io.Reader = bytes.NewBuffer([]byte("test"))
    d, err := io.ReadAll(b)
    if err != nil {
        panic(err)
    }
    b = ioutil.NopCloser(bytes.NewBuffer(d))
    fmt.Printf("read:\t%s\n", d)
}
如果所使用实现是 bytes.Reader 还可以通过调用 Seek 方法重置读取位置:
go
package main

import (
    "bytes"
    "fmt"
    "io"
)

func main() {
    b := bytes.NewReader([]byte("test"))
    readAll(b)
    b.Seek(0, 0)
    readAll(b)
}

func readAll(b io.Reader) {
    d, err := io.ReadAll(b)
    if err != nil {
        panic(err)
    }
    fmt.Printf("read:\t%s\n", d)
}
实际上读取过一次的 buffer 并不是会清空内容,而是在读取时内部实现会记录 cursor 位置。当读完全部之后 cursor 指向了最后,因此复数次读取都会得到空 的结果。而 Seek 方法可以重置 cursor 位置

Last updated:

Released under the MIT License.