New in Softimage 2013: Filtering XSICollections


In Softimage 2013, the XSICollection object now has a Filter method, so you can filter XSICollections by type, family, or path name.

oFilteredCollection = XSICollection.Filter( [Type], [Families], [Path] )

I updated my find all cameras script to use XSICollection.Filter, and here’s the timing results (form the same scene, but in 2013).

# INFO : getCameras_FindObjects finished in 0.033000 seconds
# INFO : Found 8301 cameras
# INFO : getCameras_FindObjects_w_Filter finished in 0.269000 seconds
# INFO : Found 24 cameras
# INFO : getCameras_FindObjects_w_SIFilter finished in 0.044000 seconds
# INFO : Found 24 cameras
# INFO : getCameras_FindObjects2 finished in 0.001000 seconds
# INFO : Found 49 cameras
# INFO : getCameras_FindObjects2_w_Filter finished in 0.003000 seconds
# INFO : Found 24 cameras
# INFO : getCameras_FindChildren2 finished in 0.149000 seconds
# INFO : Found 24 cameras
# INFO : getCameras_SelectAllUsingFilter finished in 0.035000 seconds
# INFO : Found 24 cameras
  • FindObjects2 is fastest, with SelectAllUsingFilter a mildly surprising second (again note that I’m calling SelectAllUsingFilter with AffectSelectionList=False, so I’m not actually selecting anything).
    FindObjects2_w_Filter		0.003000 seconds
    SelectAllUsingFilter		0.035000 seconds
    FindObjects_w_SIFilter		0.044000 seconds
    FindChildren2			0.149000 seconds
    FindObjects_w_Filter		0.269000 seconds
    
  • FindObjects finds a lot more than just cameras; it finds lots of nulls too because that GUID isn’t unique to cameras
  • In this context, SIFilter is faster than the XSICollection.Filter method

Here’s the updated script for Softimage 2013:

import time
si = Application
log = si.LogMessage
from win32com.client import constants as C

import win32com.client
oCameraColl = win32com.client.Dispatch( "XSI.Collection" )

si.SetValue("preferences.scripting.cmdlog", False, "")


def timeExecution(func):
    def closure(*args, **kwargs):
        startTime = time.time()
        try:
            ret = func(*args, **kwargs)
        except Exception, e:
            delta = time.time() - startTime
            log('Failed in %f seconds' % delta)
            raise
        delta = time.time() - startTime
        log('%s finished in %f seconds' % (func.__name__, delta))
        return ret
    return closure 

@timeExecution
def getCameras_FindObjects():
	oCameraColl = Application.FindObjects( "", "{5FC0CCAE-3DC8-11D0-9449-00AA006D3165}" )
	return oCameraColl.Count

@timeExecution
def getCameras_FindObjects_w_Filter():
	oCameraColl = Application.FindObjects( "", "{5FC0CCAE-3DC8-11D0-9449-00AA006D3165}" )
	oCameraColl = oCameraColl.Filter( "camera" )
	oCameraColl.RemoveItems( oCameraColl.Filter( "", "", "CopyPaste*" ) )
	oCameraColl.RemoveItems( oCameraColl.Filter( "", "", "View*" ) )
	return oCameraColl.Count

@timeExecution
def getCameras_FindObjects_w_SIFilter():
	oCameraColl = Application.FindObjects( "", "{5FC0CCAE-3DC8-11D0-9449-00AA006D3165}" )
	oCameraColl = si.SIFilter( oCameraColl, "camera" )
	oCameraColl.RemoveItems( oCameraColl.Filter( "", "", "CopyPaste*" ) )
	oCameraColl.RemoveItems( oCameraColl.Filter( "", "", "View*" ) )
	return oCameraColl.Count


@timeExecution
def getCameras_FindObjects2():
	c = si.FindObjects2( C.siCameraID )
	return c.Count

@timeExecution
def getCameras_FindObjects2_w_Filter():
	cams = si.FindObjects2( C.siCameraID )
	oCameraColl.Items = cams
	oCameraColl.RemoveItems( cams.Filter( "", "", "CopyPaste*" ) )
	oCameraColl.RemoveItems( cams.Filter( "", "", "View*" ) )
	return oCameraColl.Count


@timeExecution
def getCameras_FindChildren2():
	cams = si.ActiveSceneRoot.FindChildren2("", "camera")
	return cams.Count

@timeExecution
def getCameras_SelectAllUsingFilter():
	cams = si.SelectAllUsingFilter("Camera", "siIgnoreComponentVisibility", False, "")
	return cams.Count



@timeExecution
def getCameras_Model_FindObjects():
	cams = si.ActiveSceneRoot.FindObjects( C.siCameraID )
	return cams.Count


log( 'Found %d cameras' % getCameras_FindObjects() )
log( 'Found %d cameras' % getCameras_FindObjects_w_Filter() )
log( 'Found %d cameras' % getCameras_FindObjects_w_SIFilter() )
log( 'Found %d cameras' % getCameras_FindObjects2() )
log( 'Found %d cameras' % getCameras_FindObjects2_w_Filter() )
log( 'Found %d cameras' % getCameras_FindChildren2() )
log( 'Found %d cameras' % getCameras_SelectAllUsingFilter() )

Friday Flashback #63


Microsoft buys Softimage – the press release and some news clippings about the 14 Feb 1994 acquisition

The press release:

Microsoft Corporation to Acquire SOFTIMAGE Inc.

REDMOND, Washington Ð February 14, 1994 Ð Microsoft Corporation today announced that the company has signed a definitive agreement to acquire SOFTIMAGE, a leading developer of high performance 2D and 3D computer animation and visualisation software. The $130 million stock transaction has been approved by the Board of Directors of both Microsoft and SOFTIMAGE.

“The market for digital media is growing rapidly and SOFTIMAGE is a technology leader in this area. We are committed to continuing this development of leading-edge professional authoring tools which accelerate the creation of high-quality digital content,” said Bill Gates, Chairman and Chief Executive Officer of Microsoft. “We are very excited at the prospect of combining their expertise with ours,” said Gates.

“We share with Microsoft a common vision of the role that authoring tools will play as the digital media marketplace unfolds. Microsoft has a wealth of experience in supporting open operating systems and building great software tools, and we will provide specialised expertise and experience in professional quality digital media tools. We believe that as a part of Microsoft we can more quickly realise our vision,” said Daniel Langlois, Chairman, Chief Executive Officer and founder of SOFTIMAGE. Langlois will continue to head the development organisation located in Montreal, Quebec, which will operate as a part of the Advanced Technology division which directs Microsoft’s long- term technology vision.
Under the terms and conditions of the combination plan, each share of SOFTIMAGE stock will be exchangeable for 0.279 of a share of Microsoft stock, with an adjustment factor designed to provide not less than $21 and not more than $24 of value per SOFTIMAGE share. The agreement is subject to the approval of the shareholders of SOFTIMAGE, and the directors of SOFTIMAGE have unanimously agreed to vote the shares they own, which represent approximately 30% of the outstanding shares, in favour of the transaction.

SOFTIMAGE (Nasdaq-NMS: SFTIF), founded in 1986, is an innovative developer of high-performance 2D and 3D animation and simulation software. The company markets its sophisticated flagship product for 3D animation, the Creative Environmentª and a complete line of high-end 2D applications, including post- production editing and the integration of visual images, text, sound and special effects technology. SOFTIMAGE products are used by loading film studios, animation houses, broadcasters, graphic artists, product designers and engineers around the world.

Founded in 1975, Microsoft (Nasdaq-NMS: MSFT) is the world leader in software for personal computers. The company offers a wide range of products and services for business and personal use, each designed with the mission of making it easier and more enjoyable for people to take advantage of the full power of personal computing every day.

Commentary on the acquisition of Softimage by Microsoft

Seattle Times: Microsoft To Purchase Softimage — Software Giant Gains Access To Graphics For Interactive TV

“You don’t just hire folks that have this stuff [Jurassic Park-type graphics technology],” said Dain Bosworth analyst Glenn Powers. “It’s the type of thing where there are 100 people that are good. If you want to get a bunch of them at once, this is the way you grab them.”

Nathan Myhrvold, Microsoft senior vice president, said yesterday that the acquisition will give Microsoft a tool to create sophisticated computer-generated graphics that are going into movies, video games and commercials. Also, he said, “This kind of technology is the minimum (needed) to create effective CD-ROM titles.”


Microsoft Buying Maker of Animation Software

In a move underscoring its commitment to digital multimedia, Microsoft Corp said it has agreed to acquire Montreal-based Softimage Inc, a developer of computer animation software, in a $130-million stock deal. The acquisition, the software giant’s second biggest ever, increases by nearly 50% the size of the Microsoft’s 18-month-old Advanced Consumer Technology division, which is leading its efforts to help shape the information highway.

Software Industry Report, 21 Feb 1994

The buy is considered very important for Microsoft, which to date has not made any significant inroads in the emerging market for interactive television and multimedia production. Daniel Langlois, the Softimage founder and CEO, will continue to head the development organization, which will operate as part of the Microsoft advanced technology division.

In a recent press interview, Microsoft Chairman Bill Gates said his Redmond, Wash., software company will vigorously pursue opportunities in the multimedia field. How the Softimage buy will play out remains to be seen. Softimage makes tools for Silicon Graphics Inc. workstations, and its software was used in the special effects for the movie “Jurassic Park.”

http://www.immersence.com/publications/1996/1996-PLunenfeld.html

Davies is the director of visual research at SoftImage, a high-end computer graphics software group that was recently purchased by Bill Gates in his quest to have Microsoft own everything in North America that the Disney Company does not.

Microsoft Morphs into a Media Company –
Mr. Bill makes a billion-dollar bet on interactive entertainment

Wired 1994
Microsoft has been gradually creating or acquiring crucial pieces of media technology, which alone or in combination with others have the potential to spawn powerful new forms of media. Softimage 3-D animation and product tools now being ported to the PC, for example,

Excerpted from the book, “Becoming a Computer Animator” by Michael Morrison

ADVANCES OF THE 1990s In February 1994, Microsoft Corporation acquired Softimage for 130 million dollars. Microsoft’s initial use of TDI technology will be internal, to enhance their multimedia CD-ROM products and interactive TV programs. Microsoft also plans to port the Softimage software over to its Windows NT operating system. This may be the first move in starting a trend for the shifting of high-end graphics software from workstations to personal computers.

Commentary on the release of Softimage 3D for Windows NT

Graphics and Windows NT 4.0 – A Diamond Multimedia White Paper

Microsoft helped to pave the way to Windows NT for many applications by porting the highly regarded Softimage animation studio from Silicon Graphics workstations to Windows NT. For many creators of digital content in the highly competitive worlds of advertising and film, the existence of Softimage on Windows NT has proven the PC is ready for the big time.

1996: Microsoft delivers high-end 3-D animation software for Microsoft Windows NT; Softimage 3D for Windows NT provides workstation-class capabilities and performance at approximately half the system cost

“Today marks an important milestone in making high-end 3-D animation capabilities widely available,” said Daniel Langlois, senior director at Microsoft and founder of Softimage. “Because Windows NT offers the same high-performance graphics capabilities as UNIX(r)-based workstations and all of the benefits of a highly competitive ‘PC economy,’ many more content creators will be able to take advantage of high-end 3-D animation software. And these compelling price/performance figures will get even better over time.”


MICROSOFT’S SOFTIMAGE STRESSES LOW-COST HARDWARE AS IT LAUNCHES SOFTIMAGE 3D FOR WINDOWS NT

Published 06 February 1996

Microsoft Corp’s SoftImage Inc has opened up the market for its three-dimensional modeling and animation software, Microsoft SoftImage 3D, by launching a version for Windows NT (CI No 2,831). The software, which traditionally ran on Silicon Graphics Inc workstations under the Irix Unix operating system, will now run on any personal computer supporting NT.

Montreal-based SoftImage founder Daniel Langolois said the NT system has all the functionality of the Unix-based system, but enables users to choose much lower cost hardware as an option. He insisted that his aim was not to knock Silicon Graphics, but simply to open up choice for the users, and to enable more animators to use SoftImage’s three-dimensional animation software.

Scripting – Finding all cameras in a scene


In scripting, there’s several ways to find all the cameras in a scene.

I put together a little script to do some timing of the different ways of finding cameras.
Here’s a quick summary (using a scene with about 10k 3d objects). YMMV.

See this related thread on the XSI list. If you need to find scenes cameras frequently, then one suggestion (from Matt Lind) was to tag the scene cameras with a custom property, and then use FindObjects/FindObjects2 on that.

import time
si = Application
log = si.LogMessage
from win32com.client import constants as C

import win32com.client
oCameraColl = win32com.client.Dispatch( "XSI.Collection" )

si.SetValue("preferences.scripting.cmdlog", False, "")

#
# From http://www.softimageblog.com/archives/357
#
def timeExecution(func):
    def closure(*args, **kwargs):
        startTime = time.time()
        try:
            ret = func(*args, **kwargs)
        except Exception, e:
            delta = time.time() - startTime
            log('Failed in %f seconds' % delta)
            raise
        delta = time.time() - startTime
        log('%s finished in %f seconds' % (func.__name__, delta))
        return ret
    return closure 

@timeExecution
def getCameras_Application_FindObjects2():
	c = si.FindObjects2( C.siCameraID )
	return c.Count

@timeExecution
def getCameras_Application_FindObjects2_w_Filter():
	cams = si.FindObjects2( C.siCameraID )
	oCameraColl.Items = cams
	oCameraColl.RemoveItems( cams.Filter( "", "", "CopyPaste*" ) )
	oCameraColl.RemoveItems( cams.Filter( "", "", "View*" ) )

	return oCameraColl.Count


@timeExecution
def getCameras_FindChildren2():
	cams = si.ActiveSceneRoot.FindChildren2("", "camera")
	return cams.Count

@timeExecution
def getCameras_SelectAllUsingFilter():
	cams = si.SelectAllUsingFilter("Camera", "siIgnoreComponentVisibility", False, "")
	return cams.Count

@timeExecution
def getCameras_FindObjects():
	cams = Application.FindObjects( "", "{5FC0CCAE-3DC8-11D0-9449-00AA006D3165}" )

	# That GUID returns lots of other objects besides cameras
	cams = si.SIFilter( cams, 'camera' )

	# Unfortunately, XSICollection doesn't have a Filter method
#	oCameraColl.Items = cams
#	oCameraColl.RemoveItems( cams.Filter( "", "", "CopyPaste*" ) )
#	oCameraColl.RemoveItems( cams.Filter( "", "", "View*" ) )
	return cams.Count

# This finds cameras directly under a model only
@timeExecution
def getCameras_Model_FindObjects():
	cams = si.ActiveSceneRoot.FindObjects( C.siCameraID )
	return cams.Count


log( 'Found %d cameras' % getCameras_FindObjects() )
log( 'Found %d cameras' % getCameras_Application_FindObjects2() )
log( 'Found %d cameras' % getCameras_Application_FindObjects2_w_Filter() )
log( 'Found %d cameras' % getCameras_FindChildren2() )
log( 'Found %d cameras' % getCameras_SelectAllUsingFilter() )

Here’s some numbers from a scene with 9857 objects

# INFO : getCameras_FindObjects finished in 0.034000 seconds
# INFO : Found 68 cameras

# INFO : getCameras_FindObjects2 finished in 0.002000 seconds
# INFO : Found 68 cameras

# INFO : getCameras_FindObjects2_w_Filter finished in 0.005000 seconds
# INFO : Found 24 cameras

# INFO : getCameras_FindChildren2 finished in 0.153000 seconds
# INFO : Found 24 cameras

# INFO : getCameras_SelectAllUsingFilter finished in 0.034000 seconds
# INFO : Found 24 cameras

Friday Flashback #62


Yes folks, I read them all…

In the International Journal of Case Method Research & Application (2007) XIX, 4 I found this article about Pierre Nelis, who was “one of the builders of Softimage”.

The article is focused on Pierre Nelis, but it does include his story of his time at Softimage.

Pierre Nelis left a secure management position to join a newly created firm [Softimage] that increased in size from 14 to 400 employees within two years. Over time, he became a facilitator; in other words, the right-hand man who implemented the entrepreneur’s vision. When Microsoft bought the firm, Pierre Nelis was the person appointed to supervise the transition to the Bill Gates way of management.

In 1992, Pierre Nelis met Daniel Langlois, an animation software writer, and together they embarked on an adventure in which the combined creativity of Langlois and the team management skills of Nelis would propel Softimage, the company created by Langlois, onto the world stage. Softimage quickly attracted the attention of the industry greats and was purchased by Microsoft for US$130 million in 1994, in what would be the multinational’s first major acquisition, before being resold four years later. Pierre Nelis was Softimage’s Operations Vice-President from 1992 to 1998, and for the last two years of this period he was also Business Development Manager for Microsoft.

Pierre Nelis needs action. At Noranda, his last employer before the Softimage adventure, his early enthusiasm for the challenges of his job soon waned. Ever watchful, however, he quickly spotted Softimage, the company created by Daniel Langlois:

“I was a member of the Association of World Research Centre Managers and attended international conferences throughout the world. So I often came into contact with high-level gray matter! It was an enriching and eye-opening experience. However, the job [at the Noranda Group’s R&D Centre] soon became routine. I could have stayed there until I died but the challenge had gone, so I had a serious talk with myself. ‘What do you want to do? Who with? Where? What do you like, what are your strengths and weaknesses? Where might you be put to best use?’ I looked everywhere. Then I heard of Daniel Langlois, who was something of a tear away in the high-tech field.”

A quick look at Softimage confirmed that the company was growing quickly. Daniel Langlois needed someone like him “to organize it all; there were people, processes and a versatile, highly effective leader stuck in a disorganized environment”.

Daniel Langlois began his career as a producer of short films for the National Film Board (NFB), and soon earned a reputation for his top-flight special animation effects. His first film, Tony de Peltrie, produced in 1985 for Expo 86, attracted audience attention as the first 3-D stereoscopic animation film and established his position in the industry.

Despite his NFB successes, Langlois wanted more. In 1986 he mortgaged his house and launched Softimage, where he was finally free to give full rein to his creativity by designing increasingly complex special effects applications. It was not long before he outgrew his basement office and moved, with his software designers, to an old building on Montreal’s multicultural St. Laurent Street.

The Softimage product was truly revolutionary. It allowed film artists to design forms with two or three clicks of the mouse, instead of the twelve or so needed by Alias, its closest competitor. Suddenly, software was more than just a tool – it had become a partner in the design process. Its user friendliness meant that every artist could become a true designer, and the possibilities were immense.

However, before Pierre Nelis was able to meet with Daniel Langlois and offer his services, he had to climb over the “Great Wall of China” erected by a secretary and a vice-president as a protective measure for Langlois, who was overworked and bombarded by telephone calls.

Pierre Nelis eventually managed to bypass the wall, and his first meeting with Daniel Langlois lasted just over an hour. Although very different in terms of appearance – Pierre Nelis wore a “nice jacket” and tie, while Langlois was dressed in “a T-shirt and two mismatched training shoes, one orange and one green” – their contact was instantaneous and easy. “We just clicked,” said Nelis:

“From my point of view, he was exactly what I was looking for: disorganized, a victim of his own growth, an award winner who didn’t know how to organize what he had. He had about 20 employees, and the office was a boiling pot. I said to myself, it’s now or never. I was happy in my marriage, but bored with my work. I’m very serious and structured at work, very intense, a bit like a Ferrari on a racetrack. There’s a time to kick back and a time to work. The bigger the challenge, the more intense I am. So I was perfect for the firm. From Daniel’s point of view, I think he was attracted by my broad experience and the fact that I enjoyed my work so much.”

Pierre Nelis joined Softimage shortly after that first interview, in 1992. Appointed Vice-President, Human Resources and Administration, he became the 19th employee in a firm that would have a workforce of 500 by the time he left in 1998. Used to operating in structured environments, he began by drawing up his own employment contract, which offered a basic salary along with several stock options. The contract was presented to Daniel Langlois by Julien Blanchard, Softimage’s Vice-President for Finance. Langlois signed it.

Although his salary at Softimage was well below what he had earned at Noranda, Pierre Nelis did not care. He had never had a luxury lifestyle. “My car was paid for and I had no debts. I bought $10 bottles of wine instead of $20 bottles”, he said. His wife Linda was also still employed in the Marketing Department of Beauchemin, Beaton and Lapointe; it was here that the two first met and started dating.

Pierre Nelis discovered that the total lack of structure was not without its problems for Softimage, as sales began to increase both locally and internationally. One of his early tasks was to draw up employment contracts for all the personnel, containing confidentiality and non-competition agreements. It was another “first” for the company.

The founding employees were somewhat put out, since they saw this as a profound change in the organizational culture. Although it was difficult for him, Pierre Nelis was patient:

“I had no problems with new employees – they signed the agreements right away. Softimage was the darling of the world animation industry and everyone was desperate to work there. But it took me two years to get the early employees to sign.”

Employment contracts meant recruitment. As the company had no recruitment policy, Pierre Nelis instituted a rigorous recruitment process designed to identify the best software developers. In 1992, Softimage was growing rapidly, hence the need for new R&D people. In those early days, three people, namely Daniel Langlois, Claude Cajolet (Vice-President, R&D) and Pierre Nelis, were responsible for determining the basic requirements for all positions advertised in the newspapers.

Pierre Nelis would select between five and ten potential candidates from the applications received, and then refer the best three to Claude Cajolet, who interviewed them along with three or four other people from his team. Each interviewer submitted an assessment report, but regardless of the team’s recommendation, the final decision was entirely his, and everyone else simply had to live with it. This meant that every new candidate had seen about ten people before being offered a position at Softimage.

The vacation policy was another innovation introduced by Pierre Nelis:

“I introduced a policy of one month’s vacation for Vice-Presidents and three weeks for employees. In reality, though, everyone worked all the time. We took a bit of extra time if we’d been working non-stop for five or six days in Las Vegas or Amsterdam, for example. But we didn’t watch the clock. I was always available by phone, even on Christmas Day and New Year’s Day. Softimage was making a lot of money and playing in the major leagues. When you’re being paid the amount we were earning, you don’t tell your boss you won’t be answering the phone one day.”

Nineteen ninety-two was a very busy year. In addition to recruiting 80 new employees, Pierre Nelis traveled extensively. Among other things, he opened new offices in Paris and Singapore. Why there? Because the animation market is concentrated in three principal regions, all of which are worth about the same in terms of sales volume:

  • “One-third of our sales were made in Pacific Asia, with Japan and South Korea being the leading markets;
  • Another third of our sales were in the United States: to production houses in Texas, the Boston region and California
  • The other third were scattered throughout the world.”

The choice of Singapore rather than Hong Kong was deliberate. For Pierre Nelis, the advantageous business environment in Singapore (infrastructure and telecommunications costs, an educated workforce, proximity to an airport) made the city a natural choice.

Pierre Nelis recruited and helped select hundreds of employees. The firm’s fast growth generated a constant stream of new tasks in addition to the many for which he was already responsible, until in the end he was virtually living at the office. When not physically present, he was always available via the Internet:

“Somewhat naively, I always believed you could be successful in life just by being competent. I didn’t think you had to cultivate relationships with people inside and outside the company. The end justified the means. Like a hockey player who scores a lot of goals, but is hated by his teammates! I scored. Everything I touched turned to gold. It was wonderful. I was really focused on the task. For example, Julien Blanchard was a guy who tried to do everything, but when he ran into problems I took over his files. I’d say to Daniel Langlois, ‘Give me the construction file, I’ll manage it for you. Give me the accounting system computerization file and let Julien concentrate on the figures. He’s Finance Vice-President, he hasn’t the time for that.’ Everyone benefited.”

In 1993, Pierre Nelis oversaw four phases of a new construction project on the corner of Saint-Laurent Boulevard and Milton Street, extending the Softimage offices to accommodate its 500 employees. He computerized the accounting system; Softimage, a world leader in computer animation, had been using manual systems until then! He also set up a customer service department that was able to respond immediately to customer requests:

“Customer service is very important to a software company. An artist who buys the Softimage application has to meet production deadlines for films that might be in Hollywood or Japan, for example. He hasn’t the time to mess around. Customer service must be available 24 hours a day to solve problems, regardless of time differences.”

Pierre Nelis is a builder. Building is what he enjoys. When he has nothing to build, he finds his work boring. At Softimage, he did not have time to be bored – the responsibility and challenge were constant. “I’d found my niche,” he says. “I thoroughly enjoyed myself, even though I had to work hard.”

“Daniel was a great boss! He gave me operational goals and wanted to be kept in the loop, but otherwise he left me alone. Often he didn’t know how to achieve the goals himself. He didn’t care, he just wanted results. He wasn’t interested in operations.”

Who, then, was responsible for decisions such as opening up a new market or adding a new application? In most cases, a customer would express a specific need, and then all subsequent decisions were made by the Management Committee, composed of Daniel Langlois, Claude Cajolet (R & D), Dave McCray (Sales) and Pierre Nelis (Operations). The Committee met every week and set up the modus operandi to respond to the customer’s request.

In the case of adding elements to existing applications, Claude Cajolet would look at his team, and if he did not have the right person to develop the application, Pierre Nelis would recruit someone for him. After the success of Jurassic Park, customers began to be more demanding. As Pierre Nelis pointed out:

“It wasn’t me who would decide to open new markets or add features to our software. The customers would talk to Daniel first – for example, ‘Look, we won Oscars for the Jurassic Park dinosaurs. Now we want to create realistic human beings, but your software doesn’t understand hair, or the hair it produces isn’t realistic.’ So it would all start with a need expressed by a customer.”

On the other hand, when the Committee was looking for a new market, Pierre Nelis would call on his marketing team, asking them to compare the different markets and their specifications. Every decision was made jointly:

“The ideas weren’t mine. I was more of a… facilitator, if you will, a kind of semi-entrepreneur who worked to maintain the super-entrepreneur’s greatness. Tell me what you want and leave it to me! I’m the one who’ll wake up at night, thinking about what to do. And (Daniel) quickly realized that I delivered the goods. I was always ahead of deadlines. I always got organized. I brought structure. The ‘open up a market then hire a manager’ philosophy makes me laugh. My philosophy is ‘hire the right people then get them to establish and apply a strategy.’ If you have the right pilots, they’ll learn to fly whatever plane you give them.”

Pierre Nelis is an excellent conceiver and producer of complementary visions, and during his time at Softimage he became a vital element in the realization of his employer’s overall vision. The relationship between Daniel Langlois and his right-hand man was remarkably close, but always remained essentially a working relationship. When it came to organizing the company, the chemistry between the two men was strong – they understood one another quickly and completely. On the other hand, in their personal lives, outside the company, there was virtually no chemistry. Pierre Nelis remembers some delicate occasions:

“I worked with him for five years. Our offices were separated by his secretary’s office. Curiously, we never had any philosophical debates. Although we built an extraordinary world-class company that we ultimately sold to Microsoft, we were never ‘friends.’ I was his doer. We didn’t spend time together outside the office. I only had dinner with him once, in Paris, with my wife, although I did eat more often with his wife, who was Vice-President of Visual Research. When they split up, I had to manage the situation for them.”

In 1994, the Nelis family landscape changed with the birth of his daughter. For Daniel Langlois, whose baby was Softimage, it was almost a betrayal:

“Daniel thought Claude and I would abandon the company3. We changed our working hours. We might have been less present in the workplace, but we still worked far more than average, from home when necessary. For example, we’d organize a videoconference rather than a trip to California. The arrival of e-mail certainly helped us. I had dinner at home more often. Linda quit her job to look after our daughter. The two of them traveled with me all over the world. While I worked, they’d visit whatever city we were in. It was a good arrangement all around.”

The year 1994 also saw another major event, the sale of Softimage to Microsoft for US$130 million. The sale brought a new three-year contract for Pierre Nelis. It was an important commitment for him; if he left the firm before the end of the three-year period, he would lose all his stock options. And that meant losing certain wealth; every Softimage share entitled him to 0.458 of a Microsoft share, and Microsoft’s shares were divided ten times between 1994 and 1998. “I was motivated more by the idea of building a company and learning, than by money,” he says – although he was careful not to neglect his financial interests.

AT THE MICROSOFT SCHOOL…
Moshe Litchman, Microsoft’s Joint President, was sent to Montreal to head Softimage. Litchman, a software engineer who graduated from MIT, did his military service in Israel and piloted F4 fighter planes. A disciplined individual, he was one of the 20 most important people in Microsoft’s succession planning pipeline.

Moshe Litchman became Pierre Nelis’ mentor:

“He taught me about Microsoft’s culture, philosophy and know-how, including its rigor and discipline in the production and delivery of products and the entire marketing machine. In the past, we’d delivered our products in typically Quebec style, based on what I like to call the pleasure cruise philosophy. At Microsoft’s Seattle office they gave me the firm’s one-month intensive Business Warfare course. It was an extraordinary brainwashing experience!”

As the Softimage officer responsible for the merger, Pierre Nelis became joint manager of the newly merged company, along with Microsoft’s Susan Voeller. Although Softimage was owned by Microsoft, it remained 100% Canadian. From 1996 onwards, Pierre Nelis wore two hats:

  • He was Business Unit Vice-President, responsible for public and governmental affairs at Softimage. His job involved managing the firm’s technological infrastructure, and meant that he could abandon his previous duties relating to finance, operations and customer service, which had become routine and lacking in challenge for him.
  • Now a Microsoft employee, he also oversaw an Internet company project known as Microsoft Sidewalk, an Internet equivalent of the Voir publication (a free newspaper aimed at a young audience and covering a wide variety of subjects). Microsoft Sidewalk was an element of Microsoft’s business plan for the creation of virtual companies in different cities – Paris, London, Moscow, New York and Montreal – to establish trends throughout the world. However, the Montreal component had lagged far behind the other four.

    As the person responsible for the Microsoft Sidewalk website, Pierre Nelis recruited 20 people, designers and journalists, from the Montreal region. The site’s editorial content was aimed at the 18-35 age group and included restaurant reviews as well as various “Lifestyle” columns. However, the venture proved unprofitable due to poor web penetration, and Microsoft sold the entire operation, including the Montreal component, to Ticketmaster, its principal competitor.

In an attempt to keep Pierre Nelis on the payroll, Microsoft offered him the position of general manager at its Seattle, Washington or Singapore office (his choice). All three cities were important centers for the company:

“After visiting Singapore with Linda and my daughter, I turned them down. My wife is an athlete – she competed in pre-Olympic races and still runs every day. In Quebec, you can run anywhere. In Singapore, you have to run on a track out in the suburbs, about ten miles from where we would have been living. I also wanted another child and a calmer lifestyle that would allow me to get back into shape. My three-year contract was over, and I was free to do what I wanted. In 1998, I decided to leave Microsoft to become a coach or mentor for other entrepreneurs. I decided I’d rather choose my projects and stay here, in Montreal.”

And so an important chapter in Pierre Nelis’ life came to a close.

Removing duplicates from an array


This Deduplicate Array 1.2 compound from Julian Johnson can remove duplicate values from any type of array: integer, scalar, location, and vector.

Deduplicate Array uses Find in Array, which can find all occurrences of a value in the array. That means it pushes some of the looping down to a compiled FindInArray node, and gives a little better performance than if you did all the looping in ICE with Repeat nodes. A fully compiled node would probably be even faster (see this XSI list post).

To understand/visualize how Deduplicate works, I took the body of its Repeat loop, disconnected it, duplicated it six times, and plugged them all into an Execute node. That way I could Show Values for each “iteration” of the loop. So, for example, with my test array of 14 elements, I could see that took just 4 loops to remove all the duplicates. After that, in the real Deduplicate compound, each loop would basically do nothing (so I suppose you could convert it to a While loop?)

To compare performance, I built a simple “remove duplicates” tree that didn’t use Find in Array (I just used one of the first algorithms I found on google):

In one test, Deduplicate took 3 seconds while my ICE tree took 14!