Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Friday, 27 September 2019

Director Ang Lee explains why he built a digital Will Smith in ‘Gemini Man’

Before showing “Gemini Man” to a group of reporters last week, director Ang Lee described the movie as a “leap of faith.” Then, to illustrate how nervous he was, he pretended to bite his nails.

Was Lee just being self-effacing? Maybe. But afterwards, when we got a chance to grill him about the production, he had a single question in return: “Did you believe in Junior?” When we answered yes, his relief was palpable.

That’s because Lee is doing something — several things — genuinely new here.

Will Smith plays two characters in “Gemini Man”: a middle-aged government assassin named Henry Brogan, and his younger clone, Junior, who’s sent to kill his older self. Stuntmen stood in for Junior during many of the action sequences, and Smith contributed to the character through performance capture, but ultimately, Junior is a computer-generated creation from the team at effects house Weta Digital.

Lee contrasted Weta’s approach to the way other movies have experimented with using visual effects to de-age stars — he described them as just brushing away actors’ wrinkles: “When you do that, you take away all the details … Aging is much [more] complicated, it’s life.”

gmff001k

Will Smith as “Junior” in Gemini Man from Paramount Pictures, Skydance and Jerry Bruckheimer Films

Where other movies have limited this process to a handful of scenes (think Robert Downey, Jr. briefly playing a younger version of himself in “Captain America: Civil War”), Lee noted that in “Gemini Man,” Junior is one of two lead characters. That meant he needed to be more than a “gimmick” — and it would have been prohibitively expensive to apply that “handcrafted brushing” to so many shots.

Lee made things even harder for himself by shooting the movie in 3D, at 120 frames per second. In that format, everything looks more clear and detailed than in traditional film, so an unconvincing effect would be even more obvious.

“You see through people like light,” Lee said. “With that requirement, I just don’t think something that erases age will do. You have to create it from zero.”

Apparently, that creation process took two years. And while I wouldn’t describe the results on-screen as completely photo-real, I thought they worked: I never forgot that Junior was an effect, but I also believed in him as a living, breathing character.

Lee added, “One of the hardest things, if not the hardest thing, in animation is: How do you get the secret of him getting paid the big bucks?” In other words, how do you capture Will Smith’s charm?

In his younger days as a director, Lee said he would have only been concerned with making Junior a convincing character, but now, “I’ve made movies long enough to learn to respect that a movie star is not just an actor, it’s something else. He has a contract with people.”

Lee recalled that during rehearsal, Smith was “very generous about sharing what makes Will Smith Will Smith.” Still, he argued, “You cannot retrieve [that charm] from his old movies. You can use that as reference, but what drives it, what final touches [make it work]?”

gmff035 0 1

Will Smith in Gemini Man from Paramount Pictures, Skydance and Jerry Bruckheimer Films

The challenge of capturing that, he said, is one of the main reasons he wanted to make the film: “When you do the digital face and the body, it’s like a microscopic study of what drama is, what moving is, how does it connect with emotion … and what age does to you, cell-by-cell.”

Lee said there were two other big things that “absorbed” him in making “Gemini Man.” First, there was his aim of creating a more real, more “messy” style of shooting and staging action; he argued that in other films, the action is so heavily choreographed that it’s basically “dancing.” (And this is coming from the director of “Crouching Tiger, Hidden Dragon.”)

Secondly, he wanted to explore “the beauty of this kind of media, digital cinema.” That’s why he shot “Gemini Man” at the aforementioned 120 frames per second. He’s clearly enamored with the format, having shot his last movie “Billy Lynn’s Long Halftime Walk” at a high frame rate as well, but he acknowledged that it’s something audiences still have to get used to. (When it doesn’t work, it can be hard to distinguish from bad TV.)

Lee’s “dream” is that one day, this approach will no longer be called “high frame rate” — instead, it’s the standard 24 frames per second that should be called “low frame rate,” because the default will have changed.

“You don’t call it color film, right?” he said. “You say silent film, you say black-and-white.”

And if “Gemini Man” is commercially successful, Lee is hoping other filmmakers will join him to “explore this new world” and further develop the technology. In the process, they might give audiences a reason to come back to theaters.

“People think 3D … or anything high-tech is the opposite of art and soul, and I don’t buy that,” Lee said. “I have to deliver action and spectacle — I’m delighted to do it — but I think the biggest gain [is] studying the human face close up.”

That, in turn, could lead to a different style of acting: “[In] this media, you read through people. They cannot fake it; they have to fake it differently, rather. They have to upgrade their skills.”

“Gemini Man” opens in theaters in October 11. Before then, you can watch Lee and Smith discuss the movie next week at Disrupt SF.



from TechCrunch https://ift.tt/2lHfcqQ
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support