您现在的位置是:产品中心 >>正文

《巫师4》CG动画 PS5展示虚幻5惊人Demo:光追60FPS

产品中心6622人已围观

简介Epic Games和CD Projekt在“State of Unreal 2025”活动上联手展示了一段令人惊艳的《巫师4》技术演示,整个画面令人目瞪口呆。这不是《巫师4》的正式预告,而是一段技术 ...

Epic Games和CD Projekt在“State of Unreal 2025”活动上联手展示了一段令人惊艳的巫师《巫师4》技术演示,整个画面令人目瞪口呆。动画这不是展示《巫师4》的正式预告,而是虚幻一段技术展示,但它确实让我们对游戏成品有了个初步期待。惊人

Epic表示:“三年前我们推出虚幻5引擎时,光追CD Projekt Red宣布将与我们合作,巫师把大型开放世界支持引入这款引擎。动画在这次State of Unreal上,展示我们终于揭晓了我们共同努力的虚幻成果。”

《巫师4》虚幻引擎5.6技术Demo展示

《巫师4》CG动画:

这段技术演示跟随希里(Ciri)的惊人脚步,展示了她在从未曝光过的光追科维尔(Kovir)地区执行一项狩魔任务。CD Projekt已确认,巫师Kovir将是动画《巫师4》中的可探索区域之一。技术Demo展示了虚幻引擎5.6在开放世界方面的展示一些新功能,包括新的快速几何流式传输插件(Fast Geometry Streaming Plugin),整段demo是在基础款PS5上以60帧并开启光追效果运行的

在集市场景中,CD Projekt将NPC数量提升到了300名独立动画角色,技术力拉满。Demo结尾还简单预告了另一个可探索区域:兰·埃克塞特(Lan Exeter)。

官方文案是这么说的:

“当希里走进热闹的瓦尔德雷斯特(Valdrest)集市时,我们看到了虚幻5.6引擎如何应对充满高质量角色和视觉特效(如ML Deformer)的复杂场景。技术演示还展示了Nanite Foliage——一种快速且节省内存的方式,用来实现高密度、高保真的植被视觉效果,该功能计划在虚幻引擎 5.7正式发布。”

虽然这段演示让人对《巫师4》的画面充满期待,但别忘了,游戏正式发售还遥遥无期。CD Projekt表示,《巫师4》最早也得等到2027年才有可能推出。

这意味着今年肯定是等不到了,明年也别抱希望。2027是最早档期——而我们都知道,游戏行业的计划从来都不靠谱,《巫师4》跳票到2028年也不是没可能。

还有人猜测,《巫师4》会不会只登陆下一代主机?索尼这边肯定已经在搞PS6,微软也传出消息说下一代Xbox计划2027年发布,还有一台Xbox掌机在准备中。但这段Unreal演示显示,《巫师4》更有可能是一款跨世代游戏,就像《赛博朋克2077》当年那样。

关于游戏剧情方面,目前确认《巫师4》是《巫师3》之后的新三部曲的第一作。主角不再是杰洛特,而是大家熟悉的希里。

CD Projekt的执行制作人Małgorzata Mitręga在《巫师4》公布前接受IGN独家采访时说:

“让希里当主角,是一个非常自然、合乎逻辑的决定。从小说里的‘猎魔人传说’开始,一切就围绕着她展开。她是一个出彩、层次丰富的角色。至于杰洛特,我们已经和他告别了。所以这是一个延续。对我们来说,就像她从一开始就注定该接棒,这一直都是她的故事。”

虚幻5.6引擎技术Demo:展示Nanite

技术展示截图:

《巫师4》CG动画 PS5展示虚幻5惊人Demo:光追60FPS

《巫师4》CG动画 PS5展示虚幻5惊人Demo:光追60FPS

《巫师4》CG动画 PS5展示虚幻5惊人Demo:光追60FPS

《巫师4》CG动画 PS5展示虚幻5惊人Demo:光追60FPS

《巫师4》CG动画 PS5展示虚幻5惊人Demo:光追60FPS

《巫师4》CG动画 PS5展示虚幻5惊人Demo:光追60FPS

《巫师4》CG动画 PS5展示虚幻5惊人Demo:光追60FPS

《巫师4》CG动画 PS5展示虚幻5惊人Demo:光追60FPS

《巫师4》CG动画 PS5展示虚幻5惊人Demo:光追60FPS

《巫师4》CG动画 PS5展示虚幻5惊人Demo:光追60FPS

《巫师4》CG动画 PS5展示虚幻5惊人Demo:光追60FPS

《巫师4》CG动画 PS5展示虚幻5惊人Demo:光追60FPS

《巫师4》CG动画 PS5展示虚幻5惊人Demo:光追60FPS

《巫师4》CG动画 PS5展示虚幻5惊人Demo:光追60FPS

《巫师4》CG动画 PS5展示虚幻5惊人Demo:光追60FPS

《巫师4》CG动画 PS5展示虚幻5惊人Demo:光追60FPS

Tags:

相关文章


(function(){ function qs(s,root){return (root||document).querySelector(s)}; function qsa(s,root){return Array.prototype.slice.call((root||document).querySelectorAll(s));} var DICT = { home: { zh: '首页', en: 'Home' }, siteHome: { zh: '网站首页', en: 'Home' }, recommended: { zh: '推荐文章', en: 'Featured' }, hot: { zh: '热门文章', en: 'Trending' }, readArticle: { zh: '文章阅读', en: 'Read Article' }, latest: { zh: '最新博文', en: 'Latest Posts' }, readMore: { zh: '阅读更多', en: 'Read more' }, positionNow: { zh: '您现在的位置是:', en: 'You are here: ' }, content: { zh: '正文', en: 'Content' }, related: { zh: '相关文章', en: 'Related' }, tags: { zh: '标签', en: 'Tags' }, keywordsAssistant: { zh: '关键词助手', en: 'Keyword Assistant' }, enterText: { zh: '输入文本', en: 'Enter text' }, extractKeywords: { zh: '提取关键词', en: 'Extract Keywords' }, manualKeywords: { zh: '手动关键词', en: 'Manual keywords' }, applyKeywords: { zh: '应用到页面', en: 'Apply to page' }, manualPlaceholder: { zh: '手动关键词,逗号分隔', en: 'Manual keywords, comma-separated' } }; function getParam(name){try{var u=new URL(location.href);return u.searchParams.get(name)}catch(e){return null}} function detectLocale(){ var forced = getParam('lang') || (typeof localStorage!=='undefined' && localStorage.getItem('lang')); if(forced){return forced==='zh'?'zh':'en'} var nav=(navigator.language||'').toLowerCase(); var tz=''; try{tz=Intl.DateTimeFormat().resolvedOptions().timeZone||''}catch(e){} if(nav.indexOf('zh')===0 || /shanghai|urumqi|chongqing|harbin|beijing|hong_kong|macau/i.test(tz)) return 'zh'; return 'en'; } var LANG = detectLocale(); document.documentElement.setAttribute('lang', LANG==='zh'?'zh-CN':'en'); (function setCL(){ var el = qs('meta[http-equiv="content-language"]'); if(!el){ el=document.createElement('meta'); el.setAttribute('http-equiv','content-language'); document.head.appendChild(el); } el.setAttribute('content', LANG==='zh'?'zh-CN':'en'); })(); function t(key){var m=DICT[key];return m?m[LANG]||m.zh||(''+key):(''+key)} function applyI18n(root){ qsa('[data-i18n]',root).forEach(function(el){ var k=el.getAttribute('data-i18n'); el.textContent=t(k); }); } applyI18n(); // Try to retitle some known headings if present qsa('h2.htitle').forEach(function(h){ // If contains certain keywords, replace text var txt = (h.textContent||'').trim(); if(/推荐|Featured/i.test(txt)) h.textContent=t('recommended'); if(/热门|Trending/i.test(txt)) h.textContent=t('hot'); if(/相关文章|Related/i.test(txt)) h.textContent=t('related'); }); // Insert Keyword Assistant into .searchbox function buildKW(){ var box = qs('.searchbox'); if(!box) return; box.classList.add('modern'); var w = document.createElement('div'); w.className='kw-box'; w.innerHTML = ''+ '
'+ ''+ ''+ '
'+ ''; box.appendChild(w); applyI18n(w); var toggleBtn = qs('#kw-toggle', w); var panel = qs('#kw-assistant', w); toggleBtn.addEventListener('click', function(){ panel.hidden = !panel.hidden; }); var langBtn = qs('#lang-toggle', w); langBtn.addEventListener('click', function(){ var next = LANG==='zh'?'en':'zh'; try{localStorage.setItem('lang', next)}catch(e){} location.search = (function(){var p=new URL(location.href); p.searchParams.set('lang', next); return p.search})()}); var extractBtn = qs('#kw-extract', w); var manualInput = qs('#kw-manual', w); var source = qs('#kw-source', w); var list = qs('#kw-list', w); function getPageText(){ var text=''; var post=qs('#post'); if(post) text += ' '+post.textContent; qsa('.blogtitle a, .blogtext, h1, h2').forEach(function(n){ text += ' '+(n.textContent||''); }); return text; } var STOP_ZH = ['我们','你们','他们','以及','这个','那个','因此','但是','如果','因为','不是','就是','可以','文章','新闻','阅读','更多','相关','推荐','热门','最新','内容','正文','位置','现在','时间','作者']; var STOP_EN = ['the','and','for','are','this','that','with','from','your','you','was','were','will','have','has','had','can','could','would','should','a','an','to','in','by','of','on','at','as','is','it','be','or','not','but','we','our','they','their','more','read','article','news','content','latest','related','hot','recommended','author','time']; function tokenizeZh(text){ var zh = (text||'').replace(/[^\u4e00-\u9fa5]/g,''); var tokens=[]; var i; var s; for(i=0;i2;}); } function count(arr, stop){ var m={},i,t; for(i=0;i=0) continue; m[t]=(m[t]||0)+1; } return m; } function topN(map, n){ var items=Object.keys(map).map(function(k){return {k:k,c:map[k]}}); items.sort(function(a,b){return b.c-a.c}); return items.slice(0,n).map(function(x){return x.k}); } function extract(text, maxN){ maxN = maxN || 12; var zhT = tokenizeZh(text); var enT = tokenizeEn(text); var zhC = count(zhT, STOP_ZH); var enC = count(enT, STOP_EN); var zhTop = topN(zhC, Math.ceil(maxN*0.6)); var enTop = topN(enC, Math.floor(maxN*0.4)); var all = zhTop.concat(enTop); // de-duplicate substrings var out=[]; all.forEach(function(w){ if(!out.some(function(x){return x===w || x.indexOf(w)>=0 || w.indexOf(x)>=0;})) out.push(w); }); return out; } function renderList(keys){ list.innerHTML=''; keys.forEach(function(k){ var li=document.createElement('li'); li.textContent=k; list.appendChild(li); }); } function ensureTagContainer(){ var container = qs('.seo-keywords'); if(container) return container; var anchor = qs('.con_text') || qs('.lbox') || qs('article') || document.body; container = document.createElement('div'); container.className='seo-keywords'; anchor.appendChild(container); return container; } function updateMeta(keys){ var meta = qs('meta[name="keywords"]'); if(!meta){ meta=document.createElement('meta'); meta.setAttribute('name','keywords'); document.head.appendChild(meta); } meta.setAttribute('content', keys.join(',')); // visible tags var c = ensureTagContainer(); c.innerHTML=''; keys.forEach(function(k){ var a=document.createElement('a'); a.textContent=k; a.href='/search?kw='+encodeURIComponent(k); c.appendChild(a); }); } qs('#kw-apply', w).addEventListener('click', function(){ var auto = extract(source.value || getPageText(), 12); var manual = (manualInput.value||'').split(/[\s,,]+/).filter(Boolean); var keys = auto.concat(manual); // unique var seen={}; keys = keys.filter(function(x){ if(seen[x]) return false; seen[x]=1; return true; }); renderList(keys); updateMeta(keys); try{ localStorage.setItem('last_keywords', JSON.stringify(keys)); }catch(e){} }); extractBtn.addEventListener('click', function(){ var keys = extract(source.value || getPageText(), 12); renderList(keys); }); // Auto initialize from page content try{ var last = localStorage.getItem('last_keywords'); if(last){ var keys=JSON.parse(last); renderList(keys); updateMeta(keys); } else { var keysInit = extract(getPageText(), 12); renderList(keysInit); updateMeta(keysInit); } }catch(e){} } buildKW(); })();