Web như chúng ta biết, không ngừng thay đổi và phát triển. Những gì chúng ta vẫn có thể nhớ là một phương tiện đơn giản và đơn giản đã tăng một chiều khác một vài năm trước, và nó cũng không dừng lại ở đó. Cho một người tạo ra trang web , những gì đã từng là một phần của các hiệu ứng hình ảnh của bộ phim khoa học viễn tưởng hiện trên một máy tính bảng nằm trên chiếc ghế dài của bạn, và có các tòa nhà được bao phủ trong các cài đặt tương tác quy mô lớn thực sự chỉ là toàn màn hình Google Chrome Windows.
Thực hiện theo các bước dưới đây để tìm hiểu cách tạo hiệu ứng nóng chảy thực tế với ba.js.
Đi trước và lấy thư viện ba.js và đưa nó vào trang web của bạn. Bạn sẽ cần khởi tạo WebGlRenderer, cảnh và PerspectiveCamera. Sau khi những thứ này được khởi tạo, bạn sẽ cần phải hiển thị cảnh trên Yêu cầu tuyệt vời .
Tiếp theo, đèn cần được thêm vào cảnh 3D. Trong ví dụ này, hai đèn sẽ được sử dụng: đèn xung quanh và đèn điểm. Ánh sáng xung quanh đóng vai trò là màu toàn cầu tổng thể cho cảnh, trong khi ánh sáng điểm sẽ phát ra ánh sáng giảm dần với khoảng cách. Điều này sẽ cung cấp cho cảnh một số tương phản.
var Ambierslight = New Three.ambientlight (0xccccccc);
cảnh.add (Ambierslight);
var pointlight = mới ba.pointlight (0xffffff, 1);
Pointlight.Pocation.set (10, 5, 0);
Bây giờ cảnh đã được thiết lập, mô hình 3D cần được tải vào. Mô hình có thể được tải bằng bất kỳ định dạng được hỗ trợ nào (JSON, OBJ, DAE, v.v.). Dưới đây là một ví dụ về việc tải mô hình DAE. Trong ví dụ này, điều rất quan trọng là mô hình có đủ đa giác để thực hiện các sửa đổi đỉnh.
Hộp sọ hươu đang được sử dụng trong ví dụ này có 3.500 polys. Nếu số lượng poly quá thấp, các hình động đỉnh sẽ quá rõ ràng và bị bóp méo.
Loader = mới ba.colladaloader ();
Loader.Load ('Dae / Deer_Skull / Deer_skull.dae', OnloadCompletehandler);
Bump Maps là hoàn hảo để thêm độ sâu vào kết cấu của bạn với chi phí thấp. Khi bạn đã tạo hình ảnh Bump Map của mình, bạn có thể thực hiện nó bằng cách áp dụng nó vào tài liệu như dưới đây. Ngoài ra, bạn sẽ cần điều chỉnh tỷ lệ của bản đồ Bump của bạn để phù hợp với quy mô của mô hình của bạn.
Vật liệu.Bumpmap = 'IMG / Deer_Skull / Deer-Bump.jpg';
Tài liệu.Bumpscale = .008;
Trong toàn bộ trang web của mình, Johnny sử dụng một phần mở rộng trò chơi của Jerome Etienne cho ba.js giúp dễ dàng thực hiện hoạt hình đỉnh. Tiện ích mở rộng này cho phép dễ dàng truy cập vào mỗi đỉnh của một mô hình ở tốc độ khung hình, làm cho nó đơn giản để thao tác các đỉnh bằng cách sử dụng các dạng sóng.
Các Tiện ích mở rộng hoạt hình đỉnh có sẵn thông qua GitHub của Etienne. Chúng tôi sẽ tiến xa hơn về cách nó được sử dụng trong các bước tiếp theo.
Làm tan chảy một mảnh hình học liên quan đến một vài bước tổng thể. Đầu tiên, mỗi điểm được liên tục đẩy xuống dưới. Khi một điểm chạm tới mặt đất, nó đã bị đẩy ra ngoài bằng cách sử dụng những gì chúng ta sẽ gọi là 'Push Vector'.
Tiếp theo, chúng tôi sẽ đưa ra những điểm thu thập dọc theo đáy một độ dày để hình học tan chảy không hoàn toàn phẳng. Để đạt được điều này, Johnny đã chuyển mã từ Shader VFX của Skeel Lee ở Houdini và sửa đổi nó.
Dưới đây là một ví dụ sử dụng sử dụng bộ phim hoạt hình đỉnh để liên tục đẩy hình học của mô hình về phía mặt đất.
var cetexanomation = New bax.vertexAnimation (hình học, chức năng (nguồn gốc, vị trí, delta, bây giờ) {position.y - = meltamount * crazyheight;}
Điều này sẽ đẩy điểm xuống theo tỷ lệ được xác định bởi Meltamount. . Hãy nhớ gọi 'Cập nhật' trên hình ảnh động Vertex của bạn trong chu trình kết xuất.
Khi một điểm đã đạt đến mặt đất, nó cần phải được đẩy ra ngoài để đạt được hiệu quả tan chảy. Mã dưới đây đang xác định hướng nào trong trục X và Z để đẩy đỉnh để bạn có được sự dịch chuyển thống nhất. Điều kiện đảm bảo rằng chỉ những điểm đã đạt đến giới hạn thấp nhất của mô hình (mặt đất) được đẩy ra ngoài.
nếu (vị trí.y & lt; bbox.min.y) {
var centroid = bbox.max.clone (). Thêm (bbox.min.clone ()). Dividescalar (2.0);
PushVector = position.clone (). phụ (centroid);
PushVector.y = 0; }
Mã dưới đây sử dụng tiếng ồn để tạo ngẫu nhiên trong chuyển động để tan chảy có khả năng hữu cơ. Các biến tiếng ồn có thể được điều chỉnh để có được hiệu ứng mong muốn. Tiếng ồn sau đó được áp dụng cho vectơ đẩy cùng với Meltamount. và Truyền hình để kiểm soát tốc độ và kích thước của hồ bơi tan chảy. Vectơ bên ngoài này cuối cùng đã được tính toán và sau đó áp dụng cho chính đỉnh.
var n = noiseamplitude * generator.getval ((vị trí.x) * tiếng ồn + tiếng ồn);
var rawardvector = pushvector.multiplyscalar (((meltamount * spearamount) + n) * ra bên ngoài);
vị trí.add (ra bên ngoài);
Mã giải thích cho đến nay sẽ đạt được hiệu ứng tan chảy, nhưng hai điều là sai với nó. Đầu tiên, hồ bơi sẽ cảm thấy khá phẳng, bởi vì tất cả các điểm đã tan chảy với cùng một vị trí y. Thứ hai, vì tất cả đều chia sẻ cùng một y, quá nhiều điểm sẽ được xếp chồng lên nhau ở cùng một chiều cao, có thể gây nhấp nháy. Để tránh điều này, độ dày được áp dụng ở tốc độ tan chảy:
Vị trí.Y + = Meltamount * PoolThickness;
Với mã ở trên, bất kỳ mô hình nào có đủ đa giác có thể bị tan chảy. Tải xuống một tệp zip ra mã đây và trao đổi mô hình với bất cứ thứ gì bạn muốn. Chúc vui vẻ!
Bài viết này ban đầu xuất hiện trong Nhà thiết kế web Vấn đề 265. Mua nó đây .
Những bài viết liên quan:
[số 8] (Tín dụng hình ảnh: Trình thiết kế web) Có một khu vực cho phép người dùng đăng nhập..
[số 8] Bạn muốn biết làm thế nào để vẽ một con mèo? Bạn đã đến đúng nơi. Vẽ động vật có th�..
[số 8] Hình ảnh: Hình ảnh Getty Giả định là xấu cho kinh doanh. Chúng thật tệ vì, bản chất, ..
[số 8] Trang 1/5: Xem và thay đổi HTML, CSS & AMP; Js. Xem và t..
[số 8] Có nhiều khía cạnh của ánh sáng mà bạn cần xem xét để truyền đạt hình thức. Một cơ bản r�..
[số 8] Lượt xem ngoạn mục, Skylines tuyệt đẹp và cảnh quan đẹp xinh đẹp tạo ra những bức ảnh tuyệ..
[số 8] Tạo và tổng hợp vụ nổ 3D thường là một nhiệm vụ cho hai bộ phận nghệ sĩ hoặc phòng thu kh�..
[số 8] Năm vừa qua này đã là một người thay đổi trò chơi cho ngành công nghiệp trò chơi điện tử và ..