当用计算机思维进行 Logo 设计时? - 思考过程 | D2Learn 开源社区 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Sunrisepeak
V2EX    设计

当用计算机思维进行 Logo 设计时? - 思考过程 | D2Learn 开源社区

  •  
  •   Sunrisepeak 2024-09-24 20:49:35 +08:00 2242 次点击
    这是一个创建于 381 天前的主题,其中的信息可能已经有所发展或是发生改变。

    暂时没搞懂怎么加图片, 就先引用一下自己知乎上的图片


    最近在 github 上创建了一个d2learn 社区, 于是就想着怎么也得搞个 Logo 吧, 于是结合社区背设计了如下 Logo

    这个 logo 初看, 可能看不出什么。但是如果给一个提示: 二进制。那么我相信很多有一些计算机背景的同学, 肯定就能猜到这个 logo 的设计思路了 二进制 + ASCII 码。下面就来详细的介绍一下 D2Learn Logo 和其动画的创作过程

    Logo 想法的诞生过程

    由于 d2learn 是一个关于技术知识分享、学习、交流的开源社区。所以 logo 设计的时候希望体现一定的技术背景并且一定程度的能表达 d2learn, 这样就有了大体框架

    • 用二进制做技术背景表达
    • 把 d2learn 含义直接或间接的融入 Logo

    从文字到图案 - 二进制和 ASCII 码

    这样我们就能很容易把 d2learn 或其中的几个字母通过 ASCII 转成对应的二进制

    d2learn 01100100 00110010 01101100 01100101 01100001 01110010 01101110 

    或许可以换个排序方式?

    01100100 // d 00110010 // 2 01101100 // l 01100101 // e 01100001 // a 01110010 // r 01101110 // n 

    似乎有点"图案"的感觉了

    起初也差点就想把 0 和 1 的颜色调一下就当做社区 logo 的, 但想了想是不是有点太直白了点?

    同时也想到了 0 和 1 与颜色中黑与白似乎是对应的, 这样就可以把 0 用黑色表示, 1 用白色表示就能自然的形成一个图案了

    这样看起来就感觉有点哪个意思了, 但还是单调了点。或许可以把白色换成天蓝色(青-CYAN)似乎更有科技感一点?

    到这 基本这里 图案也有了、含义也有了、但似乎还是缺少了一点“艺术性”?

    融入色彩艺术

    由于一个字节由 8 个 bit 位组成, 但是 ACSII 码的最高位都是 0, 并且 d2learn 也是 7 个字母。这就导致 Logo 的实际大小是 7x7 。在这种情况下如果要突出 8 这个数字或者显式一点 8bit 的含义就是把 7x7 扩展到 8x8 。

    为了不破坏图案, 或许可以给已经形成的图案加一个底座, 并且底座必须要 8bit 都要点亮才符合我们的期望, 这里的难点就变成了底座的颜色选择了

    如果采用一种颜色会不会感觉太单调? 如果采用多色那又选择哪些颜色呢?

    能不能把“所有颜色”都融入这个 logo 里呢? 这个时联想到先前的白色、色散、光谱色(彩虹色)。这样就恰到好处 [红、橙、黄、绿、青、蓝、紫] + 白 正好是 8 种颜色。这样我们 logo 底盘的 8 个 bit 位就可以用这些颜色点亮了, 也就形成了最开始的 logo 图案

    并且黑色也作为背景色没有缺席

    Logo 动画生成

    使用 8x8 的像素面板, 然后从上到下依次控制像素的显示

    • bit 为 1 的像素: 执行 FadeIn 动画
    • bit 为 0 的像素: 执行 FadeOut 动画

    最后形成的效果就有点 Terminal 控制终端闪烁的输入提示符一样, 一个一个的输入像素的感觉...

    动画生成代码

    #include <vector> #include "hanim.h" using namespace hanim; const static int THICKNESS_240P = 1; const static int THICKNESS_480P = 2; const static int THICKNESS_1080P = 4; const static int THICKNESS = THICKNESS_480P; // THICKNESS_1080P; static std::vector<std::vector<bool>> d2learnLogoMap { {0,1,1,0,0,1,0,0}, // d {0,0,1,1,0,0,1,0}, // 2 {0,1,1,0,1,1,0,0}, // l {0,1,1,0,0,1,0,1}, // e {0,1,1,0,0,0,0,1}, // a {0,1,1,1,0,0,1,0}, // r {0,1,1,0,1,1,1,0} // n }; struct D2LearnLogo : public Scene { virtual void timeline() override { auto logo = PixelPanel(); logo.stroke_color(HColor::BLACK); logo.scale(2); //play(Create(logo)); for (int i = 0; i < 7; i++) { for (int j = 0; j < 8; j++) { if (d2learnLogoMap[i][j]) { play(FillColor(logo[i][j], HColor::CYAN), 5); } else { play(FadeOut(logo[i][j]), 5); } } } play(FillColor(logo[7][0], HColor::RED), 10); play(FillColor(logo[7][1], HColor::ORANGE), 10); play(FillColor(logo[7][2], HColor::YELLOW), 10); play(FillColor(logo[7][3], HColor::GREEN), 10); play(FillColor(logo[7][4], HColor::CYAN), 10); play(FillColor(logo[7][5], HColor::BLUE), 10); play(FillColor(logo[7][6], HColor::PURPLE), 10); play(FillColor(logo[7][7], HColor::WHITE), 10); } }; int main() { hanim::HEngine::default_config1(); //hanim::HEngine::set_window_size(320, 240); //hanim::HEngine::default_config2(); hanim::HEngine::recorder_file_name("d2learn-logo"); hanim::HEngine::render(D2LearnLogo()); hanim::HEngine::save_frame_to_img("d2learn-logo.png"); return 0; } 

    动画视频

    https://github.com/user-attachments/assets/03999462-5902-4e03-82e8-47289cabbe4b

    Other

    Logo 生成和动画完整代码

    d2learn 开源社区

    Sunrisepeak
        1
    Sunrisepeak  
    OP
       2024-09-24 20:53:16 +08:00
    有没有大佬知道, 写文章时候目前 markdown 中怎么上传图片啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5131 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 21ms UTC 09:37 PVG 17:37 LAX 02:37 JFK 05:37
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86